Fügen Sie Client-Zertifikat zu .net Core Httpclient hinzu
War ich spielen, um mit .Net-Kern und bauen eine API, nutzt payment APIs. Es gibt ein client-Zertifikat, das Hinzugefügt werden muss, um die Anfrage für zwei-Wege-SSL-Authentifizierung.
Wie kann ich dies erreichen .Net-Core mit HttpClient?
Ich habe mir diverse Artikel und festgestellt, dass HttpClientHandler bietet keine option zum hinzufügen von client-Zertifikaten.
Bitte beraten
InformationsquelleAutor der Frage Krishna.N | 2016-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe ein ähnliches Projekt, bei dem ich die Kommunikation zwischen den Diensten sowie zwischen mobile und desktop mit einem service.
Verwenden wir die Authenticode-Zertifikat von der EXE-Datei, um sicherzustellen, dass die Binärdateien, die macht der Wünsche.
Auf der anfragenden Seite (stark vereinfacht für die post).
Dann verwende ich den folgenden code auf die Aktion, die die Anforderung erhält
Wir vielmehr bieten Sie eine 404 als ein 500, wie wir diejenigen, die versuchen die url, um einen bad request eher dann lassen Sie Sie wissen, dass Sie "auf dem richtigen Weg"
InformationsquelleAutor der Antwort Computer Aided Trading Systems
Lief ich eine frische Installation für meine Plattform (Linux Mint 17.3) die folgenden Schritte: https://www.microsoft.com/net/core. Ich habe eine neue Konsole-Anwendung für die
netcoreapp1.0
Rahmen, war in der Lage, zum senden eines client-Zertifikats; ich habe jedoch, erhalten "SSL connect error" (CURLE_SSL_CONNECT_ERROR 35
) während des Tests, obwohl ich früher ein gültiges Zertifikat. Mein Fehler liegen könnte spezifisch für meine libcurl.update: ich lief die genau die gleiche Sache auf Windows 7 und es funktionierte genau so, wie benötigt.
InformationsquelleAutor der Antwort yfisaqt
Ich bin nicht mit .Net für meine client -, sondern server-Seite kann so konfiguriert werden einfach über den IIS durch die Bereitstellung von meine Asp.Net Core-website hinter IIS konfigurieren von IIS für HTTPS - + - client-Zertifikate:
iis client-Zertifikat-Einstellung:
Dann kannst du es einfach in den code:
Es funktioniert gut für mich, aber ich bin mit curl oder chrome als Kunden, nicht .Net lieben. Während die HTTPS-handshake der client-get-Anforderung vom server mit einem Zertifikat ausstatten und an den server senden.
Sache ist, wenn Sie verwenden ein .Net-Core-client, es kann nicht Plattform-spezifischen code, und würde es Sinn machen, wenn es konnte keine Verbindung sich auf alle OS-spezifische Zertifikate speichern, um Sie zu extrahieren und senden Sie es an den server. Wenn Sie kompilieren gegen die .Net 4.5.x dann scheint es einfach:
https://pfelix.wordpress.com/2012/12/16/using-httpclient-with-ssltls/
Es ist wie beim kompilieren von curl, wenn Sie wollen in der Lage sein, um verbinden Sie es mit dem Windows-Zertifikatspeicher, die Sie haben, um es zu kompilieren gegen einige bestimmte Windows-Bibliothek.
InformationsquelleAutor der Antwort Daboul
Wenn man sich die .NET-Standard-Referenz für die HttpClientHandler Klassekönnen Sie sehen, dass die ClientCertificates Eigenschaft vorhanden ist, aber versteckt ist durch die Verwendung von EditorBrowsableState.Nie. Dies verhindert, dass IntelliSense angezeigt, aber Sie wird noch im code, der es verwendet.
InformationsquelleAutor der Antwort Vivelin