2010-01-07 39 views
8

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

cevap

1

O ne sorun olabilir gibi geliyor Bu link tarihinde yayınlanmıştır. ASPNET çalışan işlemi, sunucu adına uygun sertifika adını gerektirir. Test ortamları ile uygulanabilecek iş çevreleri var.

SelfSSL.exe /T /N:CN=localhost /V:999 /Q ("localhost" dir sertifika ad)

Ve:

sertifika nesil için aşağıdaki gibi komutlarla SelfSSL.exe adlı ücretsiz program kullanabilirsiniz

winHTTPCertCfg.exe -g -c local_machine\my -s localhost -a Administrators (hibe

+0

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? –

+0

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. –

İlgili konular