Ich mache eine httpwebrequest mit einer öffentlichen Root-Autorität Certificat-Datei X509. Ich habe nur den öffentlichen Schlüssel, nicht den privaten Schlüssel. Alles funktioniert gut aus einer Konsolen-App, aber es funktioniert nicht von einer asp.net-App. Ich erhalte den Fehler: "Die zugrunde liegende Verbindung wurde geschlossen: Konnte keine Vertrauensbeziehung für den sicheren SSL/TLS-Kanal herstellen."ASP.NET und die zugrunde liegende Verbindung wurde geschlossen: Konnte keine Vertrauensstellung für den sicheren SSL/TLS-Kanal herstellen
Die Option zum Deaktivieren der Validierung ist keine Option.
Hier ist der Code
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();
Hier ist die Systemprotokolle von System.Net und System.Net Sockets.
System.Net Informationen: 0: [5928] SecureChannel # 8106798 - Eine Zertifikatskette konnte nicht für eine vertrauenswürdige Stammzertifizierungsstelle erstellt werden.
System.Net Informationen: 0: [5928] SecureChannel # 8106798 - Das Remotezertifikat wurde vom Benutzer als ungültig bestätigt.
System.Net.Sockets Ausführlich: 0: [5928] Sockel # 7486778 :: Dispose()
System.Net Fehler: 0: [5928] Ausnahme in der HttpWebRequest # 51319244 :: - Die zugrunde liegende Verbindung wurde geschlossen: Die Vertrauensbeziehung für den sicheren SSL/TLS-Kanal konnte nicht hergestellt werden.
System.Net Fehler: 0: [5928] Ausnahme in der HttpWebRequest # 51319244 :: EndGetRequestStream - Die zugrunde liegende Verbindung wurde geschlossen: Konnte Vertrauensstellung für den sicheren SSL/TLS-Kanal nicht herstellen.
Weitere Informationen
Wenn ich diesen Code (von MS-Office)
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;
}
ich schließlich den Fehler:
Remote Certificate Chain Error
Die root.cer zum Localmachine Shop hinzugefügt wurde in den MMC-Snap verwenden. Ich habe auch versucht, winhttpcertcfg.exe vergeblich zu verwenden. Da ich keinen privaten Schlüssel habe, habe ich auch keine PFX-Datei. Gedanken? –
Die Testumgebung verwendet kein SSL, also ist das in Ordnung. Ich habe geplant, die Root-Zertifizierung von der CA zu verwenden, aber das könnte ein Teil des Problems sein. Ich vermute dann, dass das SSL-Setup auf Server Ende ist ein bisschen zweifelhaft. –