Trái với câu trả lời được chấp nhận mà bạn không cần người quản lý ủy thác tùy chỉnh, bạn cần sửa cấu hình máy chủ của mình!
Tôi gặp vấn đề tương tự trong khi kết nối với máy chủ Apache với chứng chỉ dynadot / alphassl được cài đặt không chính xác. Tôi đang kết nối bằng HttpsUrlConnection (Java / Android) đang ném -
javax.net.ssl.SSLHandshakeException:
java.security.cert.CertPathValidatorException:
Trust anchor for certification path not found.
Vấn đề thực tế là cấu hình sai của máy chủ - kiểm tra nó bằng http://www.digicert.com/help/ hoặc tương tự, và thậm chí nó sẽ cho bạn biết giải pháp:
"Chứng chỉ không được ký bởi cơ quan đáng tin cậy (kiểm tra cửa hàng gốc của Mozilla). Nếu bạn đã mua chứng chỉ từ cơ quan đáng tin cậy, có lẽ bạn chỉ cần cài đặt một hoặc nhiều chứng chỉ Trung gian . Liên hệ với nhà cung cấp chứng chỉ của bạn để được hỗ trợ làm việc này cho bạn nền tảng máy chủ. "
Bạn cũng có thể kiểm tra chứng chỉ với openssl:
openssl s_client -debug -connect www.thedomaintocheck.com:443
Bạn có thể sẽ thấy:
Verify return code: 21 (unable to verify the first certificate)
và, sớm hơn trong đầu ra:
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`
Chuỗi chứng chỉ sẽ chỉ chứa 1 phần tử (chứng chỉ của bạn):
Certificate chain
0 s:/OU=Domain Control Validated/CN=www.thedomaintocheck.com
i:/O=AlphaSSL/CN=AlphaSSL CA - G2
... Nhưng nên tham khảo các cơ quan ký kết trong chuỗi trở lại một tổ chức được Android tin cậy (Verisign, GlobalSign, v.v.):
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
Hướng dẫn (và chứng chỉ trung gian) để định cấu hình máy chủ của bạn thường được cung cấp bởi cơ quan cấp chứng chỉ của bạn, ví dụ: http://www.alphassl.com/support/install-root-cert ve.html
Sau khi cài đặt các chứng chỉ trung gian do nhà phát hành chứng chỉ của tôi cung cấp, bây giờ tôi không gặp lỗi khi kết nối bằng HttpsUrlConnection.