Selbstsigniertes Zertifikat ist in Web Api immer Null

8

Ich habe einen ganzen Tag hier verbracht und sehe keinen Ausweg mehr, außer meine Kameraden hier zu fragen.

Wir haben eine Web-API, die ein X509-Zertifikat akzeptiert, aber der folgende Code gibt mir sowohl auf localhost als auch auf dem dev-Server immer null.

unten ist mein Code, um das Zertifikat zu erhalten:

%Vor%

Ich habe ein ActionFilterAttribute erstellt und in seinem OnActionExecuting versuche ich das Client-Zertifikat wie oben erwähnt zu bekommen.

Vorher habe ich das Zertifikat mithilfe von Windows PowerShell erstellt. Befolgen Sie dazu die Anweisungen auf diesem Link :

Der Befehl, den ich benutzt habe, war folgender:

%Vor%

Das Zertifikat wurde erstellt und ich habe sichergestellt, dass es sich um vertrauenswürdige Zertifikate handelt. Dann habe ich von meiner Beispiel-Client-App den folgenden Code verwendet, um das Zertifikat an meine Web-API zu senden:

%Vor%

Aber als dieser Code in meinem Web-API-Zertifikat ausgeführt wurde, war das Zertifikat null. Ich dachte, dass es wegen localhost sein könnte, und ich habe die Web-API auf dem Entwicklungsserver bereitgestellt, das Zertifikat war immer noch null.

Ich habe auch versucht, das Zertifikat von einem bestimmten Windows-Speicherort statt aus dem Speicher zu erhalten, das Ergebnis war das gleiche.

Ich habe viel gegoogelt und gegoogelt, aber nichts hat mir geholfen.

    
muhammad kashif 06.04.2017, 05:41
quelle

4 Antworten

0

Sie müssen diese Zeilen in web.config hinzufügen, um IIS zum Starten der SSL-Zertifikatsaushandlung zu zwingen:

%Vor%     
Spilarix 19.04.2017 11:54
quelle
0

Setzen Sie ServerCertificateValidationCallback Eigenschaft für Ihre request :

%Vor%

ServerCertificateValidationCallback ist eine Methode um das Serverzertifikat zu validieren. Als Ergebnis wird request Zertifikatsfehler ignorieren. Wenn Sie .NET Framework mit weniger als v4.5 verwenden, können Sie denselben Rückruf für festlegen ServicePointManager.ServerCertificateValidationCallback . Wenn Sie möchten, können Sie die benutzerdefinierte Validierung für Ihr Zertifikat überprüfen.

    
Didgeridoo 21.04.2017 14:49
quelle
0

Sie können die SSL-Einstellungen ändern, um das Zertifikat zu akzeptieren, anstatt es zu ignorieren.

    
user1010186 24.04.2017 13:43
quelle
0

Sie müssen <security><access sslFlags="SslNegotiateCert" /></security> zu Ihrer Webkonfigurationsdatei hinzufügen, wie von Spilarix angegeben, und ein Zertifikat aus dem Serverzertifikat exportieren und es installieren und für den Client verwenden, damit der Client über ein Zertifikat verfügt, das auf dem Serverzertifikat basiert (und kann validiert werden aber getrennt certicate (ich weiß, dass sie beide auf der gleichen Maschine sind). Das sollte dein Problem beheben

    
Isaac Morris 25.04.2017 05:06
quelle