Benutzerdefinierter Rückruf zur Überprüfung des .NET-HTTPS-Anforderungsserverzertifikats
Das .NET Framework überprüft beim Aufbau einer HTTPS-Verbindung die Authentizität des Serverzertifikats. In manchen Fällen kann es jedoch erforderlich sein, diese Prüfung zu umgehen. In diesem Artikel wird erläutert, wie Sie eine Rückrufmethode implementieren, mit der Sie die Zertifikatsüberprüfung für bestimmte HTTPS-Anfragen ignorieren können.
Erfahren Sie mehr über ServicePointManager.ServerCertificateValidationCallback
ServicePointManager.ServerCertificateValidationCallback
ist ein Delegat, der eine Funktion definiert, die für die Überprüfung des Serverzertifikats verantwortlich ist. Wenn das .NET Framework eine HTTPS-Verbindung herstellt, ruft es diese Rückrufmethode auf, um das Zertifikat zu überprüfen. Die Methode akzeptiert die folgenden Parameter:
obj
: Stellt Kontext für die Überprüfung des Serverzertifikats bereit. certificate
: Vom Server bereitgestelltes X.509-Zertifikat. chain
: X.509-Zertifikatskette, die zum Aufbau von Vertrauen verwendet wird. errors
: Eine Aufzählung, die alle aufgetretenen SSL-Richtlinienfehler darstellt. Implementierungsmethode
Im Beispielcode ist der Rückruf wie folgt definiert:
<code class="language-csharp">ServicePointManager.ServerCertificateValidationCallback = delegate( Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; };</code>
Dieser Rückruf ignoriert praktisch alle Zertifikatsprüfungen und gibt true
bedingungslos zurück, sodass die Verbindung unabhängig vom Zertifikatsstatus hergestellt werden kann.
Rückrufposition
Der Rückrufcode sollte platziert werden, bevor ServicePointManager.ServerCertificateValidationCallback
ausgeführt wird. Dies geschieht, wenn das .NET Framework versucht, eine HTTPS-Verbindung herzustellen. Im Beispielcode bedeutet dies, dass es vor der Zeile Stream stream = request.GetRequestStream();
platziert wird.
Andere Optionen
Für die Zertifikatsüberprüfung pro Anfrage können Sie einen Lambda-Ausdruck wie diesen verwenden:
<code class="language-csharp">request.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;</code>
Mit dieser Methode können Sie die Zertifikatsüberprüfung für einzelne Anfragen anpassen. Alternativ können Sie denselben Rückruf auf einen globalen Filter anwenden und ihn für alle von Ihrer Anwendung hergestellten HTTPS-Verbindungen aktivieren.
Durch die Implementierung von ServerCertificateValidationCallback
können Sie die Zertifikatsüberprüfung für HTTPS-Anfragen umgehen und so eine Verbindung zu einem Server herstellen, der möglicherweise ein nicht vertrauenswürdiges oder ungültiges Zertifikat bereitstellt.
Das obige ist der detaillierte Inhalt vonWie implementiert man einen benutzerdefinierten Rückruf zur Serverzertifikatsvalidierung in .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!