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."
Die Option zum Deaktivieren der Validierung ist keine Option.
Hier ist der Code
%Vor%Hier sind die Systemprotokolle von System.Net und System.Net Sockets.
System.Net Information: 0: [5928] SecureChannel # 8106798 - Eine Zertifikatskette konnte nicht mit einer vertrauenswürdigen Stammzertifizierungsstelle erstellt werden.
System.Net Information: 0: [5928] SecureChannel # 8106798 - Das Remotezertifikat wurde vom Benutzer als ungültig bestätigt.
System.Net.Sockets Verbose: 0: [5928] Socket # 7486778 :: Dispose ()
System.Net Fehler: 0: [5928] Ausnahme in der HttpWebRequest # 51319244 :: - Die zugrunde liegende Verbindung wurde geschlossen: Konnte Vertrauensstellung für den sicheren SSL / TLS-Kanal nicht herstellen.
System.Net Fehler: 0: [5928] Ausnahme in der HttpWebRequest # 51319244 :: EndGetRequestStream - Die zugrunde liegende Verbindung wurde geschlossen: Konnte Vertrauensbeziehung für den sicheren SSL / TLS-Kanal nicht herstellen.
Weitere Informationen
Wenn ich diesen Code (von CodeGuru) verwende
%Vor%Ich bekomme schließlich den Fehler:
Remote-Zertifikatskettenfehler
Dieses Problem kann mit diesem zu Application_Start hinzugefügt werden:
%Vor%Es ermöglicht grundsätzlich eine Diskrepanz zwischen dem Server und seinem Zertifikat.
Quelle:
Hinweis: Diese Problemumgehung wird für die Produktion nicht empfohlen
Es klingt, als könnte das Problem sein, was auf diesem link . Der ASPNET-Workerprozess erfordert, dass der Zertifikatsname mit dem Servernamen übereinstimmt. Es gibt Workarounds, die mit Testumgebungen implementiert werden können.
Für die Zertifikatserzeugung können Sie ein freies Programm namens SelfSSL.exe mit Befehlen wie:
verwenden SelfSSL.exe /T /N:CN=localhost /V:999 /Q
(wobei "localhost" der Name des Zertifikats ist)
Und:
winHTTPCertCfg.exe -g -c local_machine\my -s localhost -a Administrators
(um Administratoren Zugriff auf das Zertifikat zu gewähren)
Tags und Links ssl https certificate cocoahttpserver