Contrariamente alla risposta accettata , non è necessario un gestore fiducia personalizzato, è necessario correggere la configurazione del server!
Ho riscontrato lo stesso problema durante la connessione a un server Apache con un certificato dynadot / alphassl installato in modo errato. Mi sto collegando utilizzando HttpsUrlConnection (Java / Android), che stava lanciando -
javax.net.ssl.SSLHandshakeException:
java.security.cert.CertPathValidatorException:
Trust anchor for certification path not found.
Il vero problema è un'errata configurazione del server: provalo con http://www.digicert.com/help/ o simile e ti dirà anche la soluzione:
"Il certificato non è firmato da un'autorità fidata (verificando con il root store di Mozilla). Se hai acquistato il certificato da un'autorità fidata, probabilmente devi solo installare uno o più certificati intermedi . Contatta il tuo fornitore di certificati per assistenza facendo questo piattaforma server ".
Puoi anche controllare il certificato con openssl:
openssl s_client -debug -connect www.thedomaintocheck.com:443
Probabilmente vedrai:
Verify return code: 21 (unable to verify the first certificate)
e, prima nell'output:
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`
La catena di certificati conterrà solo 1 elemento (il tuo certificato):
Certificate chain
0 s:/OU=Domain Control Validated/CN=www.thedomaintocheck.com
i:/O=AlphaSSL/CN=AlphaSSL CA - G2
... ma dovrebbe fare riferimento alle autorità firmatarie di una catena a quelle ritenute affidabili da Android (Verisign, GlobalSign, ecc.):
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
Le istruzioni (e i certificati intermedi) per la configurazione del server sono generalmente fornite dall'autorità che ha emesso il certificato, ad esempio: http://www.alphassl.com/support/install-root-certificate.html
Dopo aver installato i certificati intermedi forniti dal mio emittente del certificato, ora non ho errori durante la connessione tramite HttpsUrlConnection.