SSL-Problem bei Android
Ich habe eine sehr spezifische SSL-Problem auf meinem Android. Wenn ich versuche, über den Besuch einer bestimmten Webseite über den code, bekomme ich die folgende Fehlermeldung:
SSL handshake failure: Failure in SSL library, usually a protocol error
error:140773F2:SSL routines:SSL23_GET_SERVER_HELLO: sslv3 alert unexpected message (external/openssl/ssl/s23_cInt.c:500 0xaf076228:0x00000000)
Bekomme ich dies, unabhängig von der build... ich habe es versucht auf API Level 1.5, 1.6, 2.2 und 4.0 und bekommen das gleiche Ergebnis jedes mal.
Nach einiger Fehlersuche habe ich versucht, um den Besuch der Webseite durch einen browser, und ich bekam die folgende Fehlermeldung:
Data connectivity problem
A secure connection could not be established.
Hier ist das Ding, obwohl... die Webseite öffnet sich auch Prima unter Windows-Browsern (getestet auf Firefox, IE und Chrome). Es öffnet sich auch Prima auf iOS-Geräte, die verwendet dieselbe webkit als Android, das ist seltsam. Die website funktioniert auch ohne Probleme den Opera Mini browser.
Habe ich versucht, workarounds, indem die client-Zertifikat zu der keystore-und ignoriert ungültige client-Zertifikaten, die keine Ergebnisse. Es wird jedoch angezeigt, dass das Zertifikat selbst ist nicht das Problem.
Bin ich in einer Sackgasse. Kann jemand irgendwelche Hinweise, wie bekomme ich diese zu arbeiten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie sind Sie auf diese Website zugreifen? Über den Android-browser? WebView? Oder HttpClient/HTTPSURLConnection? Es scheint, es reagiert nur auf SSL3, müssen Sie zwingen Ihre Kunden, es zu benutzen.
Ich die Lösung gefunden (danke Nikolaj für den Hinweis mich in die richtige Richtung).
War das problem zwei-Fach - ... man, es wurde wieder ein site-Zertifikat, dass Android nicht mag, und zwei, es hatte nur SSLv3 (und nicht TLS) aktiviert.
Hier war meine Lösung. Ich hatte zunächst erstellen Sie einen benutzerdefinierten socket factory-Klasse:
}
Zweiten hatte ich diese custom-HttpClient definiert in meinem code:
Dritten, rief ich die custom-HttpClient und analysiert die Ergebnisse:
TrustManager
, Sie öffnen sich, um MITM-Angriffe.Verwenden Sie diese und rufen Sie diese Methode auf HttpsTrustManager.allowAllSSL()
Wird es das problem löst und seine arbeiten gut für mich.
public class HttpsTrustManager X509TrustManager implementiert {
}