2013-09-22 3 views
5

dort. Ich muss HTTPS-Verbindung mit https://free.temafon.ru herstellen, aber ich habe CertPathValidatorException auf Android 2.3 und niedriger. Was habe ich gemacht.HttpsUrlConnection: Vertrauensanker für den Zertifizierungspfad nicht gefunden unter 2.3

  1. Schnappen Sie sich alle Zertifikate von https://free.temafon.ru mit Firefox.
  2. Importieren Sie die Zertifikate im Keystore der Reihe nach vom Zertifikat des teemon zum Stammzertifikat.
  3. Init ssl Kontext:

    final = KeyStore.getInstance Schlüsselspeicher Schlüsselspeicher ("BKS");

    keystore.load(getResources().openRawResource(R.raw.temafon), 
           "W0d3Uoa5PkED".toCharArray()); 
        final TrustManager trustManager = new TemafonTrustManager(keystore); 
    
        final SSLContext sslContext = SSLContext.getInstance("TLS"); 
        sslContext.init(null, new TrustManager[] { trustManager }, null); 
    
        HttpsURLConnection.setDefaultSSLSocketFactory(sslContext 
          .getSocketFactory()); 
    

    Hier verwende ich custom TrustManager, weil Server certs in falscher Reihenfolge sendet.

Dieser Code funktioniert auf Android 4.0 in Ordnung, aber nicht auf 2.3 mit java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. Was ich tue whrong?

Ich habe ein Testprojekt erstellt, das here gefunden werden kann.

+0

Haben Sie eine Lösung gefunden? Ich habe das gleiche Problem. – jimbob

+0

Leider habe ich alle Zertifikate für 2.3 akzeptiert. – Bracadabra

Antwort

0

Wenn Sie sagen, dass Sie alle Zertifikate mit FireFox erfasst haben, haben Sie auch die Stammzertifizierungsstelle hinzugefügt?

Höchstwahrscheinlich hat Android 2.3 nicht die Stammzertifizierungsstelle installiert. Per diesen link,

In diesem Fall tritt die SSLHandshakeException, weil Sie ein CA haben, die vom System nicht vertrauenswürdig ist. Es könnte sein, dass Sie ein Zertifikat von einer neuen Zertifizierungsstelle haben, das Android noch nicht vertraut oder Ihre App auf einer älteren Version ohne die CA ausgeführt wird.

+0

Ich stimme zu, dass Android 2.3 nicht die Stammzertifizierungsstelle hat, aber ich schnappe mir die gesamte certs-Kette und füge sie dem benutzerdefinierten Truststore hinzu. – Bracadabra

Verwandte Themen