ตรงกันข้ามกับคำตอบที่ยอมรับคุณไม่จำเป็นต้องมีผู้จัดการความเชื่อถือที่กำหนดเองคุณต้องแก้ไขการกำหนดค่าเซิร์ฟเวอร์ของคุณ!
ฉันพบปัญหาเดียวกันขณะเชื่อมต่อกับเซิร์ฟเวอร์ Apache ที่มีใบรับรอง dynadot / alphassl ที่ติดตั้งไม่ถูกต้อง ฉันกำลังเชื่อมต่อโดยใช้ 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`
ห่วงโซ่ใบรับรองจะมี 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