Nun, die SSLSocketFactory ist veraltet auf Android, was wäre der beste Weg für die Bearbeitung von Client-Zertifikat-Authentifizierung?
Arbeite ich an einer Android-app, die erfordert, dass der Client-Zertifikat-Authentifizierung (mit PKCS 12-Dateien).
Nach der Streichung von allen, die apache.http.*
haben wir begonnen, eine ziemlich große Arbeit von refactoring auf unserer Netzwerk-layer, und wir haben beschlossen zu gehen mit OkHttp als Ersatz, und so weit ich mag das sehr.
Aber ich habe nicht gefunden eine andere Art und Weise zu handhaben client-Zertifikat auth ohne Verwendung SSLSocketFactory
mit OkHttp oder irgendetwas anderes für diese Angelegenheit. Also, was wäre die beste Vorgehensweise in diesem speziellen Fall?
Gibt es einen anderen Weg mit OkHttp zu behandeln, diese Art der Authentifizierung?
SSLSocketFactory
ist nicht veraltet, der entweder in der aktuelle Versand-Android-Versionen oder in die M-Entwickler-Vorschau.Oh mein Gott, Sie haben völlig Recht, ich habe nie realisiert, es waren 2 Klassen SSLSocketFactory! org.apache.http.conn.ssl.SSLSocketFactory ist veraltet, aber javax.net.ssl.SSLSocketFactory nicht! Vielen Dank für diese Erleuchtung.
Umgekehrt, ich hatte nicht realisiert, dass HttpClient hatten Ihre eigene
SSLSocketFactory
Klasse. 🙂InformationsquelleAutor TheYann | 2015-06-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Offenbar gibt es zwei
SSLSocketFactory
Klassen. HttpClient hat seine eigene, und diese ist veraltet zusammen mit dem rest von HttpClient. Aber alle anderen werden mit zu den eher konventionellenjavax.net.ssl
die Ausgabe vonSSLSocketFactory
, das ist nicht veraltet (danke$DEITY
).InformationsquelleAutor CommonsWare
wenn Sie https verwenden, müssen Sie ein gültiges Zertifikat. Während Sie Ihre dev Bühne, die Sie haben, um das Zertifikat vertraut, wie?
sslSocketFactory(SSLSocketFactory sslSocketFactory)
ist veraltet und es ist ersetzt durchsslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager)
Sie müssen aktualisieren Sie Ihre gradle-Dateidas Stück code unten wird Ihnen helfen, einen vertrauenswürdigen OkHttpClient vertraut, dass alle ssl-Zertifikat.
Wie würde das funktionieren mit der NTLM-Authentifizierung?
Ich bekomme immer noch SSLHandshakeException: connection closed by peer
Ich bin nicht Experte in NTLM, aber möglicherweise müssen Sie verwenden eine externe Bibliothek wie JCIFS.
InformationsquelleAutor user2167877
Sehen dies finde ich eine Lösung und in meine Seite, ist die Arbeit gut. Prüfen Sie, wie habe ich integriert.
OkHttpClient.Builder client = new OkHttpClient.Builder();
fügen Sie hier alle Eigenschaften für client-Instanz
.
.
.
und fügen Sie diese code-Zeile für sslSocketFactory:
InformationsquelleAutor Krste Moskov