Genel bir Kök Yetkisi Certificat dosyası X509 kullanarak bir httpwebrequest yapıyorum. Özel anahtar değil, sadece ortak anahtar var. Her şey bir Konsol uygulamasından çalışır, ancak bir asp.net uygulamasından çalışmaz. Hatayı alıyorum: "Temel bağlantı kapatıldı: SSL/TLS güvenli kanalı için güven ilişkisi kurulamadı."ASP.NET ve Temel bağlantı kapatıldı: SSL/TLS güvenli kanalı için güven ilişkisi kurulamadı
Doğrulama seçeneğini devre dışı bırakma seçeneği bir seçenek değildir.
İşte kod İşte
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://xxxxxxx/gateway.aspx");
string post = "abcdef";
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
req.ContentLength = post.Length;
var cert = System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromCertFile(@"c:\temp\root.cer");
req.ClientCertificates.Add(cert);
StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
stOut.Write(post.ToString());
stOut.Close();
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
System.Net ve System.Net Soketleri gelen Sistem Günlükleri olmasıdır.
System.Net Bilgi: 0: [5928] SecureChannel # 8106798 - Güvenilir bir kök yetkilisine bir sertifika zinciri oluşturulamadı.
System.Net Bilgi: 0: [5928] SecureChannel # 8106798 - Uzak sertifika, kullanıcı tarafından geçersiz olarak doğrulandı.
System.Net.Sockets Ayrıntılı: 0: [5928] Soket # 7.486.778 :: imha()
System.Net hatası: 0: HttpWebRequest # 51.319.244 :: içinde [5928] İstisna - altta yatan bağlantı kapatıldı: SSL/TLS güvenli kanalı için güven ilişkisi kurulamadı.
Sistem Hatası Hata: 0: [5928] Özel durum HttpWebRequest # 51319244 :: EndGetRequestStream - Temel bağlantı kapatıldı: SSL/TLS güvenli kanalı için güven ilişkisi kurulamadı.
ayrıntılı bilgi
I (CodeGuru itibaren) bu kodu kullanırsanız
public static bool ValidateServerCertificate(object sender,
X509Certificate certificate, X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors ==
SslPolicyErrors.RemoteCertificateChainErrors) {
return false;
} else if (sslPolicyErrors ==
SslPolicyErrors.RemoteCertificateNameMismatch) {
System.Security.Policy.Zone z =
System.Security.Policy.Zone.CreateFromUrl
(((HttpWebRequest)sender).RequestUri.ToString());
if (z.SecurityZone ==
System.Security.SecurityZone.Intranet ||
z.SecurityZone ==
System.Security.SecurityZone.MyComputer) {
return true;
}
return false;
}
return true;
}
Ben sonuçta hata alıyorum
:
Remote Certificate Chain Error
root.cer MMC ek bileşenini kullanarak LocalMachine Store'a eklendikten için tavsiye edilmez. Ive ayrıca winhttpcertcfg.exe'yi boşuna kullanmaya çalıştı. Özel bir anahtarım olmadığı için PFX dosyam da yok. Düşünceler? –
Test ortamı SSL kullanmıyor, yani sorun yok. Kök sertifikasyonunu CA'dan kullanmayı planlıyordum, ancak bu sorunun bir parçası olabilir. Daha sonra sunucu ucundaki SSL kurulumunun biraz tehlikeli olduğunu düşünüyorum. –