Ich brauche eine gute Möglichkeit, Zertifikat oder Public-Key-Pinning in einer Windows 10 Universal-Anwendung zu implementieren. Der ganze Code ist in C# und alle Verbindungen sind HTTPS, also wäre etwas für die Klasse Windows.Web.Http.HttpClient
großartig. Gibt es eine einfache Klasse/Bibliothek oder zumindest eine Schritt-für-Schritt-Anleitung, wie man diese Dinge implementiert, die sicher von jemandem ausgeführt werden können, der die obskuren Details von X.509-Zertifikaten nicht kennt?Zertifikat Pinning in Windows 10 Universal App
Einige Dinge, die ich gefunden habe, sprechen über die Verwendung von nativem Code oder Bibliotheken von Drittanbietern wie OpenSSL (sehr kompliziert!). Das Beste, was ich gefunden habe, ist this question über Pinning in WP8.0, die ein Code-Beispiel enthält, das auf WP8.1 und hoffentlich auch Win10 funktionieren sollte, aber es ist irgendwie hässlich und verwirrend, und ich bin mir nicht sicher, wie man es benötigt dass das Zertifikat des Servers ist eines der gepinnten beim Senden der Anfrage mit den sensiblen Informationen. Eine vorherige Überprüfung erscheint aufgrund von TOCTOU-Angriffen nicht sicher (es sei denn, die Funktion HttpRequestMessage
. TransportInformation
öffnet die Verbindung und hält sie offen, so dass ein Angreifer keine Chance hat, einen Mann zu gewinnen -in-the-middle Position auf einer neuen Verbindung). Idealerweise gibt es eine Möglichkeit, den HttpClient so zu filtern, dass er sich nur mit Servern mit gepinnten Zertifikaten verbindet, aber das nächste, was ich finden kann, macht genau das Gegenteil (ignorieren bestimmte Cert-Fehler, wie über here gesprochen) über die HttpBaseProtocolFilter.IgnorableServerCertificateErrors
Eigenschaft, scheint keine Möglichkeit zu haben, die gültigen Zertifikate einzuschränken.
Hat jemand hier eine gute Lösung? Wenn der Ansatz HttpRequestMessage.TransportInformation
(mit benutzerdefiniertem Cert-Validierungscode) die einzige Option ist, ist es gegen TOCTOU-Angriffe sicher, diese Eigenschaft vor dem Senden der Anforderung zu überprüfen?
Hallo, habe ich die gleichen Probleme wie Sie, hatten Sie Glück, wie es geht? – toroveneno