Android SSL-Fehler: Zertifikat nicht vertrauenswürdig ist...manchmal
In der app, die ich auf Arbeit bin, ich habe, um eine HTTPS-Verbindung zu einem web-server. Ich war immer Zertifikat nicht vertrauenswürdig, Fehler und nach Anhörung stackoverflow fand ich dieses blog-posting:
http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/
Scheint es, wie die CA für diesen server ist nicht im Lieferumfang enthalten in den Android-Standard speichern. In einer nussschale, die ich heruntergeladen habe alle Zertifikate, erzeugt einen keystore mit den BKS-provider, importiert den Schlüssel, importiert die keystore in mein Projekt, die Unterklassen der DefaultHttpClient-Klasse zu zwingen, es zu benutzen, mein keystore.
Nachdem Sie die Schritte in den blog, es funktionierte perfekt auf dem emulator. Allerdings, wenn ich es testen auf einem Gerät, schlägt es zeitweise. Ich glaube, ich habe vereinzelt ein Muster. Wie es scheint, nachdem einige Zeit vergangen ist und ich versuche eine HTTPS-Verbindung, wird es scheitern. Dann, wenn ich Versuch die gleiche Verbindung wieder herzustellen, es wird gelingen. Wenn ich eine Weile warten und dann erneut versuchen, es beim ersten mal fehlschlägt, gelingt es, auf wiederholte versuche. Kann ich wohl beheben, indem man einfach mehrere versuche auf Fehler, aber ich würde gerne wissen, was Los ist. Das Verhalten lässt darauf schließen irgendeine Art von cache, aber ich weiß nicht, wie Sie gehen über es zu finden oder zu ändern sein Verhalten. Hat jemand irgendwelche Vorschläge über das, was Los ist, oder weiß was ich falsch mache? Jede Hilfe würde geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich konnte ein ähnliches problem durch die Einstellung
bevor ich habe meine HTTP-Aufrufe. Es scheint ein problem mit Android halten geschlossene verbindungen in Ihrer Verbindung-pool und versuchen Sie wiederzuverwenden.
Können Sie "überspringen" der Zertifikate. Ja, Sie verlieren die Sicherheit, aber manchmal ist es die einzige Lösung...
Es zu tun. Deklarieren Sie zunächst eine TrustManager:
Zweite, ändern Sie die SSL-Kontext:
Ich hoffe Euch helfen.