Im Gegensatz zur akzeptierten Antwort benötigen Sie keinen benutzerdefinierten Vertrauensmanager, sondern müssen Ihre Serverkonfiguration korrigieren!
Ich habe das gleiche Problem beim Herstellen einer Verbindung zu einem Apache-Server mit einem falsch installierten Dynadot / Alphassl-Zertifikat festgestellt. Ich verbinde mich mit HttpsUrlConnection (Java / Android), das geworfen hat -
javax.net.ssl.SSLHandshakeException:
java.security.cert.CertPathValidatorException:
Trust anchor for certification path not found.
Das eigentliche Problem ist eine Fehlkonfiguration des Servers. Testen Sie es mit http://www.digicert.com/help/ oder ähnlichem, und Sie erfahren sogar die Lösung:
"Das Zertifikat ist nicht von einer vertrauenswürdigen Behörde signiert (Überprüfung anhand des Mozilla-Stammspeichers). Wenn Sie das Zertifikat von einer vertrauenswürdigen Behörde gekauft haben, müssen Sie wahrscheinlich nur ein oder mehrere Zwischenzertifikate installieren . Wenden Sie sich an Ihren Zertifikatsanbieter, um diesbezüglich Unterstützung zu erhalten Serverplattform. "
Sie können das Zertifikat auch mit openssl überprüfen:
openssl s_client -debug -connect www.thedomaintocheck.com:443
Sie werden wahrscheinlich sehen:
Verify return code: 21 (unable to verify the first certificate)
und früher in der Ausgabe:
depth=0 OU = Domain Control Validated, CN = www.thedomaintocheck.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, CN = www.thedomaintocheck.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 OU = Domain Control Validated, CN = www.thedomaintocheck.com
verify error:num=21:unable to verify the first certificate`
Die Zertifikatskette enthält nur 1 Element (Ihr Zertifikat):
Certificate chain
0 s:/OU=Domain Control Validated/CN=www.thedomaintocheck.com
i:/O=AlphaSSL/CN=AlphaSSL CA - G2
... sollte aber die Signaturbehörden in einer Kette auf eine zurückführen, der Android vertraut (Verisign, GlobalSign usw.):
Certificate chain
0 s:/OU=Domain Control Validated/CN=www.thedomaintocheck.com
i:/O=AlphaSSL/CN=AlphaSSL CA - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
Anweisungen (und die Zwischenzertifikate) zum Konfigurieren Ihres Servers werden normalerweise von der Behörde bereitgestellt, die Ihr Zertifikat ausgestellt hat, z. B.: Http://www.alphassl.com/support/install-root-certificate.html
Nach der Installation der von meinem Zertifikatsaussteller bereitgestellten Zwischenzertifikate habe ich jetzt keine Fehler beim Herstellen einer Verbindung mit HttpsUrlConnection.