WebRequest sendet kein Clientzertifikat

8

Ich schreibe einen Client für eine REST-API und authentifiziere mich bei der API. Ich muss ein Zertifikat verwenden, das mir zur Verfügung gestellt wurde.

dieser Code ist wie folgt:

%Vor%

Jedes Mal, wenn ich die Anfrage mache, erhalte ich einen Fehler 400 und wenn ich Fiddler benutze, um die Antwort zu sehen, bekomme ich folgendes:

%Vor%

Ich sehe keinen Grund dafür, das Zertifikat nicht zu senden, aber die Fehlerbehebung bei SSL ist nicht so einfach. Ich habe einige Debug-Anweisungen hinzugefügt, um ein paar Details hinzuzufügen, und habe den Fiddler nicht mehr benutzt und er ist, was ich bekommen habe

Diese Fehler stammen von ValidateServerCertificate ()

%Vor%

Dies sind die Fehler der WebExection, die ausgelöst wird.

%Vor%

Dies ist der ValidateServerCertificate () - Code. Er gibt immer "True" zurück, um alle Cert-Fehler zu ignorieren.

%Vor%     
user961346 03.05.2014, 23:49
quelle

1 Antwort

10

Ihr Code lädt das Client-Zertifikat aus einer lokalen Datei. Sie sollten mehr Erfolg haben, wenn Sie das Clientzertifikat in den Zertifikatspeicher importieren (was dringend empfohlen wird, um den privaten Schlüssel zu schützen). Dann sollte Ihr Code mehr wie folgt aussehen:

%Vor%

Weitere Informationen finden Sie unter Importieren eines Zertifikats . Der Code setzt voraus, dass Sie das Zertifikat mit öffentlichen und privaten Schlüsseln in den Ordner Eigene Zertifikate ("My") des aktuellen Benutzers importiert haben.

Sie müssen kein ServicePointManager.ServerCertificateValidationCallback angeben. Dadurch kann Ihre Anwendung ändern, wie das Zertifikat Server validiert wird. Dies hat keinen Einfluss darauf, wie der Server Ihr Client -Zertifikat validiert.

    
Joel Allison 04.05.2014 18:46
quelle

Tags und Links