Verwenden von Datatheorems Vertrauens- und Trustkit-Android-Repositories
Die ursprünglichen Plattformbibliotheken finden Sie unten
[iOS] https://github.com/datatheorem/trustkit
[Android] https://github.com/datatheorem/trustkit-android
iOS | https://www.nuget.org/packages/datatheorem.trustkit.net.ios
Android | https://www.nuget.org/packages/datatheorem.trustkit.net.android
Die grundlegende Schnittstelle für diese Bibliothek besteht darin, den httpMessageHandler auf einem System.net.http.httpclient Constructor mit einer TrustKit -Version zu überschreiben. Verwenden Sie einen beliebigen Abhängigkeitsdienst. Das folgende Beispiel verwendet den integrierten Maui -Abhängigkeitsdienst. Dadurch wird die plattformspezifische HTTP -Nachrichtenhandler für alle in der freigegebenen Code -Bibliothek benötigten HTTP -Clients erstellt.
IHttpMessageHandlerFactory httpMessageHandlerFactory = DependencyService.Resolve<IHttpMessageHandlerFactory>();
HttpClient httpClient = new HttpClient(httpMessageHandlerFactory.BuildHttpMessageHandler());
Die iOS- und Android -definierten Handler können wie gewünscht für zusätzliche Funktionen weiter überschrieben werden. Sie müssen immer noch die richtigen Initialisierungsmethoden aufrufen!
Die Ermittlung der Pin -Set -Werte kann schwierig sein: Es ist die Basis 64 -Codierung des SHA256 -Hashs der öffentlichen Schlüsselinformationen des Zertifikats. Nachdem Sie das Zertifikat in .Cer -Format auf Ihren Computer heruntergeladen haben [können Sie dies auf Chrome, Firefox usw. tun], berechnen Sie den Pin -Set -Wert mit OpenSSL am Terminal (ersetzen Sie den {CertificateName} .cer durch den tatsächlichen Namen des heruntergeladenen Zertifikats).
openssl x509 -in {certificateName}.cer -pubkey -noout
| openssl pkey -pubin -outform der
| openssl dgst -sha256 -binary
| openssl enc -base64
Konfigurieren Sie für iOS, indem Sie die Konfiguration der TrustKit in die info.plist stellen, wie in der ursprünglichen Trustkit -Bibliothek beschrieben. In dieser Implementierung wird kein Swizzling verwendet, auch wenn das Swizzling in der Info.plist eingeschaltet ist. Nur die HTTPClients mit dem Parameter trustkit httpMessageHandler verwendet die Implementierung des Zertifikats.
Achten Sie bei der fertigen Methode des AppDelegates unbedingt auf:
httpMessageHandlerFactory.InitSharedInstanceWithConfiguration();
Dies initialisiert den TrustKit iOS -Code.
Für Android konfigurieren Sie die Konfiguration der TrustKit in der normalen Android -Sicherheitskonfigurationsdatei (Ressourcen/XML/network_security_config.xml) und folgen Sie der verbleibenden Dokumentation, wie sie in der ursprünglichen Treuhandkit -Bibliothek beschrieben werden.
In der Oncreate -Funktion der MainActivity setzen Sie:
httpMessageHandlerFactory.InitializeWithNetworkSecurityConfiguration(this);
Dadurch wird der Trustkit -Android -Code initialisiert.
Zertifikatstab ist eine wichtige mobile Sicherheitstechnik (https://owasp.org/www-community/controls/certificate_and_public_key_pinning). Mit ihrer Bewerbung können Anwendungsentwickler einen bekannten Zertifikatwert (oder den öffentlichen Schlüsselwert) versenden. Während der TLS -Handschüttung zur Herstellung einer sicheren HTTPS -Verbindung mit einem Remote -Server wird dieser gelieferte bekannte Wert mit dem vom Server dargestellten Wert verglichen (der zum Entschlüsseln von Paketen verwendet wird). Wenn der Wert übereinstimmt, ermöglicht der Entwickler für mobile Anwendungen die Verbindung fort. Wenn dies nicht der Fall ist, kann der Entwickler die Verbindung stoppen und den Fehler bewältigen, aber er ist für angemessen erachtet (z. B. den Benutzer benachrichtigt).
Verwenden der neueren system.net.httpclient (https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient) Klasse und die Einleitung der korrekten Plattform-Nachrichtenhandler können die native Plattform für Netzwerkdienste verwenden. Diese Nachrichtenhandler können auf verschiedene Weise erweitert werden, um Komprimierung und andere Optimierungen wie die Jonathan-Listen hier zu ermöglichen (http://jonathanpeppers.com/blog/improving-http-performance-in-xamarin-application). Eine wichtige Möglichkeit, diese Handler zu erweitern - und die Motivation dieses Repositorys - ist das Zertifikatspinning über plattformabhängige Bibliotheksimplementierungen nach Datatheorem.
Vielen Dank an Sie alle für Ihre Unterstützung und Ihr Interesse an der Aufrechterhaltung und Behebung von Problemen mit diesem Repository!