허용되는 답변과 달리 사용자 정의 트러스트 관리자가 필요 하지 않으므로 서버 구성을 수정해야합니다!
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의 루트 저장소 확인). 신뢰할 수있는 기관에서 인증서를 구입 한 경우 하나 이상의 중간 인증서를 설치해야합니다 . 인증서 공급자에게 문의하십시오. 서버 플랫폼. "
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`
인증서 체인에는 하나의 요소 (인증서) 만 포함됩니다.
Certificate chain
0 s:/OU=Domain Control Validated/CN=www.thedomaintocheck.com
i:/O=AlphaSSL/CN=AlphaSSL CA - G2
...하지만 체인에서 서명 기관을 참조해야합니다 (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을 사용하여 연결할 때 오류가 없습니다.