Score:0

GitLab ให้บริการรายการใบรับรอง 1 ใบรับรอง

ธง ru

ฉันพยายามเรียกใช้โปรแกรมติดตั้ง 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 ของฉัน

Score:0
ธง ru

เมื่อผมได้อ่าน เอกสาร GitLab อย่างใกล้ชิดยิ่งขึ้น ฉันตระหนักว่าฉันเข้าใจความแตกต่างระหว่าง กำหนดค่าใหม่ และ อัพ nginx.

หากเนื้อหาใบรับรอง SSL ของคุณได้รับการอัปเดต แต่ไม่มีการเปลี่ยนแปลงการกำหนดค่า gitlab.rb ดังนั้นการกำหนดค่า gitlab-ctl ใหม่จะไม่ส่งผลกระทบต่อ NGINX ให้เรียกใช้ sudo gitlab-ctl hup nginx แทน เพื่อให้ NGINX โหลดการกำหนดค่าที่มีอยู่และใบรับรองใหม่อย่างสง่างาม

ฉันคิด กำหนดค่าใหม่ จะทำทุกอย่างใน อัพ nginx บวกมากขึ้น ปรากฎว่า กำหนดค่าใหม่ จะไม่สังเกตเห็นการเปลี่ยนแปลงในไฟล์ใบรับรอง หากคุณไม่ได้เปลี่ยนแปลงอะไรในไฟล์ใบรับรอง /srv/gitlab/config/gitlab.rb ไฟล์.

ฉันแก้ไขปัญหาด้วยการเรียกใช้คำสั่งนี้หลังจากผนวกใบรับรองระดับกลางเข้าไป /srv/gitlab/config/ssl/myserver.myorg.org.crt:

sudo docker exec -it gitlab1 bash -c "gitlab-ctl hup nginx"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา