ฉันพยายามเรียกใช้โปรแกรมติดตั้ง Omnibus ของ GitLab และใช้ใบรับรอง SSL ขององค์กร แต่ไคลเอ็นต์ SSL บ่นว่าไม่รู้จักผู้ออกใบรับรอง ฉันจะกำหนดค่าใบรับรองระดับกลางในห่วงโซ่ความน่าเชื่อถือได้อย่างไร
การตั้งค่าของฉันเริ่มต้นด้วยการเรียกใช้ GitLab เวอร์ชันล่าสุด การเปิดเผยพอร์ตสำหรับ HTTPS และ HTTP และอื่น ๆ:
sudo docker run --detach --hostname myserver.myorg.org --เผยแพร่ 1443:443 --เผยแพร่ 1080:80 \
--เผยแพร่ 2222:22 --เผยแพร่ 5005:5005 --ชื่อ gitlab1 \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:14.2.3-ce.0
นั่นสร้างการกำหนดค่าเริ่มต้นจำนวนมากใน /srv/gitlab/config
ผมจึงไปตั้งค่า URL ของเซิร์ฟเวอร์ gitlab.rb
:
external_url 'https://myserver.myorg.org'
ฉันได้รับไฟล์ใบรับรองและไฟล์คีย์จากองค์กรของฉัน ดังนั้นฉันจึงคัดลอกไปยัง /srv/gitlab/config/ssl
ไดเรกทอรีเป็น myserver.myorg.org.crt
และ myserver.myorg.org.key
. จากนั้นฉันจะกำหนดค่าเซิร์ฟเวอร์ GitLab ใหม่:
sudo docker exec -it gitlab1 bash -c "gitlab-ctl กำหนดค่าใหม่"
ตอนนี้ฉันพยายามตรวจสอบการกำหนดค่า SSL:
เสียงสะท้อน | gnutls-cli -p1443 myserver.myorg.org
ฉันได้รับข้อผิดพลาดมากมายในผลลัพธ์ รวมถึงสิ่งเหล่านี้:
...
ประมวลผลใบรับรอง CA 129 รายการ
กำลังแก้ไข 'myserver.myorg.org:1443'...
กำลังเชื่อมต่อกับ '127.0.0.1:1443'...
- ประเภทใบรับรอง: X.509
- ได้ใบประกาศฯ จำนวน 1 ใบ
...
- สถานะ: ใบรับรองไม่น่าเชื่อถือ ไม่รู้จักผู้ออกใบรับรอง
*** การตรวจสอบ PKI ของใบรับรองเซิร์ฟเวอร์ล้มเหลว...
*** ข้อผิดพลาดร้ายแรง: ข้อผิดพลาดในใบรับรอง
ดูเหมือนว่าฉันไม่มีห่วงโซ่ความไว้วางใจที่สมบูรณ์ ผู้ออกใบรับรองขององค์กรของเราคือ "CN=DigiCert TLS RSA SHA256 2020 CA1,O=DigiCert Inc,C=US" ฉันพบใบรับรองของพวกเขาบน เว็บไซต์ของพวกเขาและดาวน์โหลดไฟล์เฉพาะนั้น:
wget https://cacerts.digicert.com/DigiCertTLSRSASHA2562020CA1-1.crt.pem
ฉันแยกใบรับรองเวอร์ชันข้อความ:
opensl x509 - ใน DigiCertTLSRSASHA2562020CA1-1.crt.pem - ข้อความ
...
-----เริ่มต้นใบรับรอง-----
MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh
...
A7sKPPcw7+uvTPyLNhBzPvOk
-----จบใบรับรอง-----
ฉันผนวกเข้ากับใบรับรองขององค์กรของฉันใน /srv/gitlab/config/ssl/myserver.myorg.org.crt
ตอนนี้จึงมีใบรับรองขององค์กรก่อน แล้วจึงใบรับรอง Digicert
-----เริ่มต้นใบรับรอง-----
...ใบรับรององค์กรของเรา ...
-----จบใบรับรอง-----
-----เริ่มต้นใบรับรอง-----
... ใบรับรอง Digicert ฉันเพิ่งดาวน์โหลด
-----จบใบรับรอง-----
นี่เป็นขั้นตอนที่ฉันมั่นใจน้อยที่สุด ฉันอ้างอิงจาก คำแนะนำ GitLab:
ตรวจสอบให้แน่ใจว่าคุณใช้ห่วงโซ่ใบรับรองแบบเต็มเพื่อป้องกันข้อผิดพลาด SSL เมื่อไคลเอนต์เชื่อมต่อ ลำดับห่วงโซ่ใบรับรองแบบเต็มควรประกอบด้วยใบรับรองเซิร์ฟเวอร์ก่อน ตามด้วยใบรับรองระดับกลางทั้งหมด โดยมี CA รูทอยู่ท้ายสุด
หมายความว่ารวมใบรับรองทั้งสองเข้าด้วยกันในไฟล์เดียวกันหรือไม่
อย่างไรก็ตามฉันวิ่ง กำหนดค่าใหม่
คำสั่งและทดสอบอีกครั้ง:
sudo docker exec -it gitlab1 bash -c "gitlab-ctl กำหนดค่าใหม่"
...
เสียงสะท้อน | gnutls-cli -p1443 myserver.myorg.org
ฉันยังคงได้รับข้อผิดพลาดเดิม รวมถึง "มีรายการใบรับรอง 1 ใบ" นั่นทำให้ฉันคิดว่าฉันไม่ได้เพิ่มใบรับรอง Digicert ลงในห่วงโซ่อย่างถูกต้อง ฉันยังลองใส่ใบรับรอง Digicert ก่อนใบรับรองขององค์กรของเรา
ฉันทำตามเพื่อให้แน่ใจว่าใบรับรองถูกต้อง โพสต์นี้. เดอะ opensl s_server
และ openssl s_client
ทำงานร่วมกันได้ดี ดังนั้นฉันคิดว่าปัญหาคือการกำหนดค่า GitLab ของฉัน