承認された回答とは逆に、カスタムのトラストマネージャーは必要ありません。サーバー構成を修正する必要があります。
dynadot / alphassl証明書が正しくインストールされていないApacheサーバーに接続しているときにも、同じ問題が発生しました。投げていたHttpsUrlConnection(Java / Android)を使用して接続しています-
javax.net.ssl.SSLHandshakeException:
java.security.cert.CertPathValidatorException:
Trust anchor for certification path not found.
実際の問題は、サーバの設定ミスである-とのテストをhttp://www.digicert.com/help/または類似し、それもあなたの解決策を教えてくれます。
「証明書は信頼できる機関によって署名されていません(Mozillaのルートストアに対してチェックしています)。信頼できる機関から証明書を購入した場合は、おそらく1つ以上の中間証明書をインストールする必要があります。これについては、証明書プロバイダーにお問い合わせください。サーバープラットフォーム。」
opensslで証明書を確認することもできます。
openssl s_client -debug -connect www.thedomaintocheck.com:443
あなたはおそらく見るでしょう:
Verify return code: 21 (unable to verify the first certificate)
そして、以前の出力:
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`
証明書チェーンには1つの要素(証明書)のみが含まれます。
Certificate chain
0 s:/OU=Domain Control Validated/CN=www.thedomaintocheck.com
i:/O=AlphaSSL/CN=AlphaSSL CA - G2
...しかし、Androidによって信頼されているもの(Verisign、GlobalSignなど)に戻るチェーンの署名機関を参照する必要があります。
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
サーバーを構成するための手順(および中間証明書)は、通常、証明書を発行した機関によって提供されます。例:http : //www.alphassl.com/support/install-root-certificate.html
証明書発行者から提供された中間証明書をインストールした後、HttpsUrlConnectionを使用して接続するときにエラーが発生しなくなりました。