Score:0

สามารถตรวจสอบ TLS ได้หรือไม่หากเซิร์ฟเวอร์ไม่มีใบรับรองผู้ออก

ธง kz

ฉันกำลังพยายามกำหนดค่า Apache httpd v2.4 สำหรับการตรวจสอบสิทธิ์ LDAP เป็น AD ใบรับรอง LDAPS ออกโดย CA ภายใน ไม่ว่าจะด้วยเหตุผลใดก็ตาม (ฉันไม่ได้อยู่ในทีม AD) ทั้งสภาพแวดล้อมผลิตภัณฑ์หรือผลิตภัณฑ์ที่ไม่ใช่ผลิตภัณฑ์ของเราจะเผยแพร่ห่วงโซ่ทั้งหมด

ไม่ใช่ผลิตภัณฑ์ส่งเซิร์ฟเวอร์และใบรับรองกลาง แต่ไม่ใช่รูท ฉันสามารถเชื่อมต่อผ่าน Apache ได้สำเร็จด้วย:

เปิด LDAPVerify ServerCert
LDAPTเชื่อถือ GlobalCert CA_BASE64 chain.crt
# $cat intermediate.pem root.pem > chain.crt

น่าเสียดายที่ผลิตภัณฑ์ส่งใบรับรองเซิร์ฟเวอร์เท่านั้น ไม่มีตัวกลาง (ผู้ออก) และไม่มีราก การระบุห่วงโซ่เดียวกันที่มีผู้ออกและรูทไม่ทำงาน ฉันได้ลองทุกสิ่งที่ฉันนึกออก: ใบรับรองเซิร์ฟเวอร์เท่านั้น, int เท่านั้น, เซิร์ฟเวอร์ + int, เซิร์ฟเวอร์ + int + รูท แต่ไม่ทำงานเลยทั้งใน Apache หรือการทดสอบด้วย opensl s_client -เชื่อมต่อ $x -CAfile $y.

แน่นอนว่าตัวเลือกที่ดีที่สุดคือการให้ทีม AD เผยแพร่ห่วงโซ่ทั้งหมด แต่มีวิธีอื่นในการตรวจสอบการเชื่อมต่อ (นอกเหนือจากการปิดใช้งานการตรวจสอบ) หรือไม่

แก้ไข:

นี่คือผลลัพธ์ของ openssl s_client -เชื่อมต่อ devldap.company.com:636 -CAfile int+root.pem:

เชื่อมต่อแล้ว(00000003)
ความลึก=2 CN = CA หลักของบริษัท
ตรวจสอบผลตอบแทน:1
ความลึก=1 DC = com, DC = บริษัท CN = CA ระดับกลางของบริษัท
ตรวจสอบผลตอบแทน:1
เชิงลึก=0 C = สหรัฐอเมริกา ST = รัฐ O = บริษัท OU = OTS CN = devldap.company.com
ตรวจสอบผลตอบแทน:1
---
ห่วงโซ่ใบรับรอง
 0 วินาที:C = สหรัฐอเมริกา ST = รัฐ O = บริษัท OU = OTS CN = devldap.company.com
   i:DC = com, DC = company CN = CA ระดับกลางของบริษัท
 1 วินาที:DC = com, DC = บริษัท CN = CA ระดับกลางของบริษัท
   i:CN = CA หลักของบริษัท
---
ใบรับรองเซิร์ฟเวอร์
-----เริ่มต้นใบรับรอง-----
MIIH8TCCBtmgAwIBAgITTQACdEm5xkCMTnqGDQAAAAJ0STANBgkqhkiG9w0BAQsF
...
jce8VpEUyZKDClUrcyRBSxd0rq2I
-----จบใบรับรอง-----
เรื่อง=C = สหรัฐอเมริกา ST = รัฐ O = บริษัท OU = OTS CN = devldap.company.com

ผู้ออก = DC = com, DC = บริษัท CN = CA ระดับกลางของบริษัท

---
ไม่มีการส่งชื่อ CA ของใบรับรองไคลเอ็นต์
ประเภทใบรับรองลูกค้า: เครื่องหมาย RSA, เครื่องหมาย DSA, เครื่องหมาย ECDSA
ขออัลกอริทึมลายเซ็น: RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:DSA+SHA1:RSA+SHA512:ECDSA+SHA512
อัลกอริทึมลายเซ็นที่ขอร่วมกัน: RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:RSA+SHA512:ECDSA+SHA512
สรุปการลงนามเพียร์: SHA256
ประเภทลายเซ็นเพียร์: RSA
คีย์อุณหภูมิเซิร์ฟเวอร์: ECDH, P-384, 384 บิต
---
SSL handshake อ่าน 4639 ไบต์และเขียน 486 ไบต์
การยืนยัน: ตกลง
---
ใหม่, TLSv1.2, Cipher คือ ECDHE-RSA-AES256-GCM-SHA384
รหัสสาธารณะของเซิร์ฟเวอร์คือ 2048 บิต
รองรับการเจรจาต่อรองใหม่อย่างปลอดภัย
การบีบอัด: ไม่มี
การขยายตัว: ไม่มี
ไม่มีการเจรจา ALPN
เซสชัน SSL:
    โปรโตคอล : TLSv1.2
    รหัส : ECDHE-RSA-AES256-GCM-SHA384
    รหัสเซสชัน: F90...411
    เซสชัน-ID-ctx: 
    มาสเตอร์คีย์: 985...D1E
    ตัวตน PSK: ไม่มี
    คำใบ้ประจำตัว PSK: ไม่มี
    ชื่อผู้ใช้ SRP: ไม่มี
    เวลาเริ่มต้น: 1651420792
    หมดเวลา : 7200 (วินาที)
    ตรวจสอบรหัสส่งคืน: 0 (ตกลง)
    ความลับหลักเพิ่มเติม: ใช่
---
เสร็จแล้ว

และสำหรับผลิตภัณฑ์ openssl s_client -เชื่อมต่อ ldap.company.com:636 -CAfile int+root.pem:

เชื่อมต่อแล้ว(00000003)
เชิงลึก=0 C = สหรัฐอเมริกา ST = รัฐ O = บริษัท CN = ldap.company.com
ตรวจสอบข้อผิดพลาด: num=20: ไม่สามารถรับใบรับรองผู้ออกในท้องถิ่น
ตรวจสอบผลตอบแทน:1
เชิงลึก=0 C = สหรัฐอเมริกา ST = รัฐ O = บริษัท CN = ldap.company.com
ตรวจสอบข้อผิดพลาด:num=21:ไม่สามารถตรวจสอบใบรับรองแรก
ตรวจสอบผลตอบแทน:1
เชิงลึก=0 C = สหรัฐอเมริกา ST = รัฐ O = บริษัท CN = ldap.company.com
ตรวจสอบผลตอบแทน:1
---
ห่วงโซ่ใบรับรอง
 0 วินาที:C = สหรัฐอเมริกา ST = รัฐ O = บริษัท CN = ldap.company.com
   i:DC = com, DC = company CN = CA ระดับกลางของบริษัท
---
ใบรับรองเซิร์ฟเวอร์
-----เริ่มต้นใบรับรอง-----
MIIHXzCCBkegAwIBAgITTQADO1BEj8rlaKH+eQAAAAM7UDANBgkqhkiG9w0BAQsF
...
FGBKggzc3AK2pcHT9E3f46Oy+A==
-----จบใบรับรอง-----
เรื่อง=C = สหรัฐอเมริกา ST = รัฐ O = บริษัท CN = ldap.company.com

ผู้ออก = DC = com, DC = บริษัท CN = CA ระดับกลางของบริษัท

---
ไม่มีการส่งชื่อ CA ของใบรับรองไคลเอ็นต์
---
SSL handshake อ่าน 2059 ไบต์และเขียน 655 ไบต์
ข้อผิดพลาดในการยืนยัน: ไม่สามารถตรวจสอบใบรับรองใบแรกได้
---
ใหม่, SSLv3, Cipher เป็น AES256-SHA
รหัสสาธารณะของเซิร์ฟเวอร์คือ 2048 บิต
ไม่รองรับการเจรจาใหม่ที่ปลอดภัย
การบีบอัด: ไม่มี
การขยายตัว: ไม่มี
ไม่มีการเจรจา ALPN
เซสชัน SSL:
    โปรโตคอล : TLSv1.2
    รหัส : AES256-SHA
    รหัสเซสชัน: 33B...377
    เซสชัน-ID-ctx: 
    มาสเตอร์คีย์: A5D...ACE
    ตัวตน PSK: ไม่มี
    คำใบ้ประจำตัว PSK: ไม่มี
    ชื่อผู้ใช้ SRP: ไม่มี
    เวลาเริ่มต้น: 1651420815
    หมดเวลา : 7200 (วินาที)
    ตรวจสอบรหัสส่งคืน: 21 (ไม่สามารถตรวจสอบใบรับรองใบแรกได้)
    ความลับหลักเพิ่มเติม: ไม่
---
เสร็จแล้ว

แก้ไข: ปรากฎว่าไฟล์ชื่อ "int.pem" เป็นใบรับรองเซิร์ฟเวอร์จากโครงการอื่น นีโต้. หวังว่าฉันจะได้ตรวจสอบก่อนที่จะเสียเวลามากกับเรื่องนี้ ด้วยเชนที่มีใบรับรอง CA ระดับกลางและรูทจริง จึงจะยืนยันได้สำเร็จ

dave_thompson_085 avatar
jp flag
เซิร์ฟเวอร์ TLS ได้รับอนุญาต (และบางครั้งสนับสนุน) เพื่อละเว้นใบรับรองหลัก กรณีที่ไม่ใช่ผลิตภัณฑ์ของคุณเป็นเรื่องปกติและควรทำงานร่วมกับรูท (เท่านั้น) ใน `LDAPTrustedGlobalCert CA*` โดยค่าเริ่มต้น OpenSSL สามารถเติมห่วงโซ่จาก truststore และ `openssl s_client -connect $prod:636 -CAfile int_and_root.pem` (หาก openssl ต่ำกว่า 1.1.1 เซิร์ฟเวอร์ _and_ ต้องการ SNI ที่ฉันไม่รู้จักสำหรับ MS ให้เพิ่ม `- ชื่อเซิร์ฟเวอร์ $prod`) ควรใช้งานได้ ถ้าไม่คุณสามารถให้รายละเอียด? แต่ในขณะที่ Apache ใช้ OpenSSL สำหรับ https ก็ยังไม่ชัดเจนสำหรับฉันว่า (หรืออย่างไร) จะใช้ OpenSSL สำหรับ ldaps ดังนั้นอาจไม่ช่วยอะไร
Joe Buckley avatar
kz flag
@ dave_thompson_085 ฉันได้เพิ่มเอาต์พุต s_client ในโพสต์แล้ว คุณช่วยลองดูอีกครั้งได้ไหม
Joe Buckley avatar
kz flag
@dave_thompson_085 ขอบคุณมาก! ขออภัย มันเป็นข้อผิดพลาดของผู้ใช้ในส่วนของฉัน อย่างไรก็ตาม สิ่งที่ฉันสาบานก็คือใบรับรองระดับกลางนั้นเป็นใบรับรองเซิร์ฟเวอร์สำหรับสิ่งอื่นทั้งหมด สร้าง .pem ใหม่ด้วย int + root จริง และตรวจสอบและทำงานใน Apache ได้ด้วย

โพสต์คำตอบ

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