java.security.cert.CertPathValidatorException: Vertrauensanker für Zertifizierungspfad nicht gefunden. Android 2.3

8

In meinem Server (Produktionsserver) habe ich ein goDaddy SSL-Zertifikat. Ich habe sowohl iOS und Android-Apps mit dem Server verbinden, iOS ohne Probleme, Android mit den Versionen 4. * alles ist gut, aber mit Geräten mit 2.3. * Ich bekomme immer eine SSLHandshakeException.

Ich habe es genau so auf der Android-Entwickler-Seite gesehen ( Ссылка ).

Ich habe bereits ähnliche Threads hier in stackoverflow gesehen ( hier ) aber keiner hilft.

Dann habe ich diesen Thread gesehen, der über die Verwendung von Extended Key spricht, aber beim Debuggen von I Holen Sie die folgenden Informationen:

%Vor%

Ich denke also, dass das Zertifikat die Verwendung der erweiterten Schlüssel nicht erzwingt.

Auch auf dies thread gibt es einige andere mögliche Ursachen wie Datum / Uhrzeit ist völlig falsch, die alle nicht existent sind.

Wenn ich das in Betracht ziehe, weiß ich jetzt nicht, wo das Problem liegt.

Irgendwelche Vorschläge?

BEARBEITEN: StackTrace unten:

%Vor%     
joseph 04.08.2014, 15:29
quelle

3 Antworten

2

Offenbar befindet sich der Aussteller Ihres Zertifikats nicht im Truststore der 2.3-Geräte.

Sehen Sie sich die root und intermediate Ca's Ihres GoDaddy Zertifikats an und prüfen Sie, ob die Zertifikate auf Ihrem 2.3 Gerät vorhanden sind.

Siehe Ссылка , um eine Liste von 2.3 zu erhalten Zertifikate.

Wenn nur die Root-CA verfügbar ist, stellen Sie sicher, dass Ihr Webserver auch die Zwischenzertifikate auf Anfrage bereitstellt.

    
userM1433372 04.08.2014, 16:04
quelle
5

Ich habe viele Orte in SO und im Internet durchsucht, um diese Sache zu lösen. Dies ist der Code, der für mich funktionierte (Android 21):

%Vor%

app.certificateString ist ein String, der das Zertifikat enthält, zum Beispiel:

%Vor%

Ich habe getestet, dass Sie beliebige Zeichen in die Zertifikatszeichenfolge einfügen können, wenn sie selbstsigniert sind, solange Sie die genaue Struktur oben behalten. Ich habe die Zertifikat-Zeichenfolge mit der Terminal-Befehlszeile meines Laptops erhalten. Ich muss mehr Details wissen, lass es mich wissen.

    
Josh 30.12.2015 17:05
quelle
1

Falls jemand die Antwort benötigt, habe ich die Antwort nach 2 Tagen google gefunden. Grundsätzlich müssen wir TrustManager verwenden, um den CAs in unserem KeyStore zu vertrauen, weil in Android 2.3.x der Keystore nicht ordnungsgemäß verwendet wird. Kredit für Ссылка für den CustomTrustManager.

Siehe: Ссылка

KeyPinStore.java

%Vor%

CustomTrustManager.java

%Vor%

Um es zu verwenden, holen Sie einfach die SSLSocketFactory und wenden Sie sie an, zB:

mit HttpsURLConnection

%Vor%

mit Volley

%Vor%     
Newbie009 28.09.2017 09:38
quelle