ฉันมีปัญหาในการกำหนดค่า SSL บนเซิร์ฟเวอร์ Debian 6.0 32 บิต ฉันค่อนข้างใหม่กับ SSL ดังนั้นโปรดอดทนกับฉัน ฉันรวมข้อมูลให้มากที่สุดเท่าที่จะทำได้
หมายเหตุ: ชื่อโดเมนที่แท้จริงถูกเปลี่ยนเพื่อปกป้องข้อมูลประจำตัวและความสมบูรณ์ของเซิร์ฟเวอร์
การกำหนดค่า
เซิร์ฟเวอร์กำลังทำงานโดยใช้ nginx มีการกำหนดค่าดังนี้:
ssl_certificate /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_verify_depth 2;
ฉันผูกใบรับรองโดยใช้วิธีการที่อธิบายไว้ที่นี่
cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt
mysite.ca.crt
ใบรับรองที่มอบให้ฉันโดยผู้มีอำนาจลงนามอยู่ที่ไหนและbundle.crt
เป็นใบรับรอง CA ที่ส่งถึงฉันโดยผู้มีอำนาจเซ็น ปัญหาคือฉันไม่ได้ซื้อใบรับรอง SSL โดยตรงจาก GlobalSign แต่ผ่านทาง Singlehop ผู้ให้บริการโฮสติ้งแทน
การทดสอบ
ใบรับรองได้รับการตรวจสอบอย่างถูกต้องบน Safari และ Chrome แต่ไม่ใช่บน Firefox การค้นหาเบื้องต้นพบว่าอาจเป็นปัญหากับ CA
ฉันสำรวจคำตอบของคำถามที่คล้ายกันแต่ไม่สามารถหาวิธีแก้ไขได้เนื่องจากฉันไม่เข้าใจว่าใบรับรองแต่ละใบมีจุดประสงค์อะไร
ผมใช้ s_client OpenSSL เพื่อทดสอบการเชื่อมต่อและการส่งออกที่ได้รับซึ่งดูเหมือนว่าจะบ่งบอกถึงปัญหาเช่นเดียวกับคำถามที่คล้ายกัน ข้อผิดพลาดมีดังนี้:
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1
รายละเอียดเต็มรูปแบบของการตอบสนองของ OpenSSL (พร้อมใบรับรองและข้อมูลที่ไม่จำเป็นตัดทอน) สามารถพบได้ที่นี่
ฉันยังเห็นคำเตือน:
No client certificate CA names sent
เป็นไปได้ไหมว่านี่คือปัญหา ฉันจะแน่ใจได้อย่างไรว่า nginx ส่งชื่อ CA เหล่านี้
ความพยายามในการแก้ไขปัญหา
ฉันพยายามแก้ไขปัญหาโดยดาวน์โหลด root CA โดยตรงจาก GlobalSign แต่ได้รับข้อผิดพลาดเดียวกัน ฉันอัปเดต root CA บนเซิร์ฟเวอร์ Debian โดยใช้update-ca-certificates
คำสั่ง แต่ไม่มีอะไรเปลี่ยนแปลง อาจเป็นเพราะ CA ที่ส่งมาจากผู้ให้บริการของฉันถูกต้องจึงทำให้ใบรับรองถูกล่ามโซ่สองครั้งซึ่งไม่ได้ช่วยอะไร
0 s:/OU=Domain Control Validated/CN=*.mysite.ca
i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - 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
ขั้นตอนถัดไป
โปรดแจ้งให้เราทราบหากมีสิ่งใดที่ฉันสามารถลองได้หรือหากฉันมีการกำหนดค่าทั้งหมดไม่ถูกต้อง
AlphaSSL CA - SHA256 - G2
ใบรับรองโดเมนของคุณมีการลงนามโดยผู้ออกAlphaSSL CA - G2
แต่ห่วงโซ่ของซัพพลายกลาง ฉันเชื่อว่าคุณต้องลบใบรับรองระดับกลางปัจจุบัน (AlphaSSL CA - G2
) และแทนที่ด้วยลายนิ้วมือae:bf:32:c3:c8:32:c7:d7...
(AlphaSSL CA - SHA256 - G2
) นอกจากนี้คุณไม่GlobalSign Root CA
จำเป็นต้องส่ง ลูกค้าต้องรูทความไว้วางใจของพวกเขา (หรือในระดับกลาง)