2017-06-12 3 views
0

Ich bin kürzlich auf ein Problem gestoßen, bei dem ich versuche, eine Ressource von einer Site abzurufen. Die Website wurde mit einem selbstsignierten Zertifikat verknüpft. Wenn ich Ressource über WebRequest anfordere, wird der folgende Fehler ausgegeben:Die beste Methode, um selbstsignierte Zertifikate zu bearbeiten

Ich habe nach Lösungen gesucht. Ich möchte die Überprüfung auf Zertifikate nicht deaktivieren. Kurz gesagt, ich konnte keine überzeugende Antwort finden. Bitte lassen Sie mich wissen, wie Sie am besten mit selbstsignierten Zertifikaten umgehen können.

+0

Dieser Fehler bedeutet, dass der zugrunde liegende TCP-Client die Authentizität des Servers nicht überprüfen konnte. Es gibt verschiedene Möglichkeiten, die Bereitstellung von Zertifikaten durchzuführen. Laden Sie beispielsweise das selbstsignierte Zertifikat in Ihren persönlichen Speicher, um die Peer-Trust-Validierung zu verwenden. – Biscuits

+0

Kannst du es bitte ein bisschen mehr erklären? – Sasu

+0

In einem typischen Szenario, bei dem TLS aktiviert ist, stellt der Server dem Client während eines Handshake-Vorgangs ein Zertifikat vor, bevor eine sichere Verbindung hergestellt wird. Das Zertifikat ermöglicht dem Client die kryptografische Überprüfung, dass der Server authentisch ist (um Spoofing zu verhindern), bevor der Client die Verbindung akzeptiert und möglicherweise vertrauliche Informationen an den Server sendet. Diese Servervalidierung in Ihrem Client kann nach eigenem Ermessen übersprungen (nicht empfohlen) werden. – Biscuits

Antwort

0

Zunächst ist es wichtig zu wissen, dass diese Ausnahme den Zugriff auf einen gefälschten Webserver verhindert, indem Sie die Vertrauenswürdigkeit der Site-Zertifizierung überprüfen.

Selbst signierte Zertifikate vertraut werden kann, aber man muss installieren es Root-CA in das System vertrauenswürdigen CA-Speicher ist.

Es Sie darauf bestehen, auf dem Server zu vertrauen, dass es von selbst signierten Zertifikat signiert ist Speicher Root-CA in vertrauenswürdigem CA ohne zu installieren, können Sie den Kontrollmechanismus zwingen, etwas mit diesem zu vertrauen:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

Oder besser Ansatz Um diese erzwungene Vertrauensstellung nur für die HttpWebRequest-Instanz festzulegen:

var request = (HttpWebRequest)HttpWebRequest.Create(myUri); 
request.ServerCertificateValidationCallback = delegate { return true; }; 
+0

Ich benutze ASP.NET 4.0. Ich glaube nicht, dass ich das tun kann. request.ServerCertificateValidationCallback = delegate {return true; }; – Sasu

Verwandte Themen