2016-03-31 9 views
0

Ich habe eine Android-App, die versucht, HTTPS-Anfragen an einen Server mit einem CA-G4 signierten Zertifikat von Symantec Class 3 Secure Server zu senden. Beim Versuch, eine Anfrage über die Apache-HTTP-Bibliothek zu senden (ich denke, das gilt auch für andere HTTP-Clients), wird eine Ausnahme mit dem Hinweis "Kein Peer-Zertifikat" ausgelöst. Dieselben Anfragen an die gleichen Server unter iOS funktionieren einwandfrei. Selbst wenn ich eine Verbindung mit dem Server in Chrome herstelle, die auf dem gleichen Android-Gerät läuft, auf dem ich gerade teste, heißt es, dass das Zertifikat vollkommen in Ordnung ist.Symantec-Zertifikat nicht gefunden unter Android

Jetzt habe ich gehört, dass Google das Vertrauen für einige Symantec-Zertifikate fallengelassen hat, aber soweit ich weiß, nur diejenigen mit einem 1024-Bit-Schlüssel. Der fragliche ist mit einem 2048-Bit-Schlüssel signiert. Und Chrome akzeptiert es auch!

Ich fand auch diesen Artikel [1] sagend, dass ich den kompletten keychain als BouncyCastle keystore importieren muss. Das Problem hierbei ist, dass jeder Benutzer die URL auf seinem eigenen Server angibt und seine eigenen Zertifikate verwaltet.

Also meine Frage ist: Ist jemand mit diesem Problem vertraut und kennt einen Workaround? Ich fand endlose Anleitungen, die mir zeigten, wie man die Zertifikatsvalidierung für eine Anfrage umkehrt ... aber das wird keine Lösung für mich sein.

[1] http://blog.antoine.li/2010/10/22/android-trusting-ssl-certificates/

Antwort

0

Das Problem, das ich war tatsächlich hatte, dass der Server erforderlich SNI (Server Name Indication) Unterstützung auf dem HTTP-Client. Die Android-Version der Apache-HTTP-Bibliothek unterstützt SNI nicht. Also musste ich meine eigene SSLSocketFactory schreiben, die es unterstützt.

Verwandte Themen