ในความเป็นจริง RHEL ไม่ได้ให้อะไรที่สามารถใช้เป็น 'ไดเรกทอรีใบรับรอง' เพื่อวัตถุประสงค์ในการเชื่อถือ CA สำหรับ OpenSSL ไดเรกทอรีใบรับรอง - 'CApath' - เป็นไดเรกทอรีที่มีไฟล์ใบรับรองแต่ละรายการ (ในรูปแบบ PEM หรือรูปแบบ 'ใบรับรองที่เชื่อถือได้' เพิ่มเติมของ OpenSSL) โดยใช้ชื่อในรูปแบบเฉพาะตามแฮชของชื่อเรื่องของใบรับรอง โดยปกติจะทำได้โดยใส่ไฟล์ที่มีชื่อและ.pem
นามสกุลที่มนุษย์สามารถอ่านได้ในไดเรกทอรีและทำงานc_rehash
บนมัน (ดูman c_rehash
) สำหรับ GnuTLS ตั้งแต่ 3.3.6 (ก่อนหน้านั้น GnuTLS ไม่มีการสนับสนุนไดเรกทอรี) มันเป็นเพียงไดเรกทอรีที่มีไฟล์ PEM อยู่ในนั้น GnuTLS จะพยายามโหลดทุกไฟล์ในไดเรกทอรีและประสบความสำเร็จในทุกสิ่ง PEM-ish (ไม่สามารถจัดการรูปแบบ 'ใบรับรองที่เชื่อถือได้' ของ OpenSSL) ฉันไม่แน่ใจว่า NSS สามารถใช้ไดเรคทอรีที่เต็มไปด้วยไฟล์ใบรับรองแต่ละไฟล์ได้หรือไม่ แต่เอกสารของ OpenLDAP ดูเหมือนว่าจะแนะนำให้ทำได้ (แต่ถ้าไดเรกทอรีนั้นมีฐานข้อมูล NSS อยู่ด้วย) ไม่ว่า RHEL จะไม่มีอะไรเหมือนไดเรกทอรีที่เต็มไปด้วยไฟล์ใบรับรอง CA แต่ละไฟล์
Debian และอนุพันธ์จัดหาให้/etc/ssl/certs
ในรูปแบบนี้ /etc/ssl/certs
เป็นที่ตั้งที่เชื่อถือได้ของร้านค้า Debian และ IMO ทุกอย่างที่มีให้ควรจัดวางไว้เหมือน Debian's เนื่องจาก Debian มีไดเรกทอรีที่วางไว้ในแบบเดียวกันมากขึ้นหรือน้อยลงเช่นเดียวกันตั้งแต่ปี 1999 RHEL มี/etc/ssl/certs
ไดเรกทอรี แต่อยู่ใน ไม่ได้อยู่ในรูปแบบนี้ - ไม่มีไฟล์ใบรับรองใด ๆ เลย คุณไม่สามารถใช้มันเป็น CApath สุจริตใน RHEL (และ Fedora และอนุพันธ์) ที่ไดเรกทอรีนั้นเป็นกับดัก อย่าใช้มัน (ดูhttps://bugzilla.redhat.com/show_bug.cgi?id=572725และhttps://bugzilla.redhat.com/show_bug.cgi?id=1053882สำหรับพื้นหลังบางประการเกี่ยวกับสาเหตุที่มีอยู่ในตอนแรกและวิธีที่ฉันพยายามจะแก้ไข) ดังนั้นฉันคิดว่าคุณถูกต้องเกี่ยวกับสิ่งที่เกิดขึ้น แต่ผิดเกี่ยวกับเหตุผลว่าทำไม OpenLDAP ไม่ได้ทำอะไรผิดพลาดและก็ไม่ได้ล้มเหลวเพราะ "ca-bundle.trust.crt ... เป็นฐานข้อมูลใบรับรอง / คีย์ Mozilla NSS" (ซึ่งถูกเรียกใช้cert8/9.db
และkey3/4.db
และระบบทั่วทั้งระบบใน RHEL อาศัยอยู่/etc/pki/nssdb
) มันเป็นเพียงความล้มเหลวเพราะ/etc/ssl/certs
ไม่สามารถใช้งานได้เป็น 'ไดเรกทอรีใบรับรอง' เลย
RHEL ไม่ได้ให้สิ่งใดที่สามารถใช้งานได้ในฐานะที่เป็นร้านค้าที่เชื่อถือได้ในสไตล์ CApath ที่อื่น ๆ เช่นกัน ร้านค้าระบบความไว้วางใจของ RHEL ให้เป็นไฟล์กำ PEM เดียว (เป็น 'CAFile' ในแง่ OpenSSL) ซึ่งสามารถพบได้ที่และ/etc/pki/tls/certs/ca-bundle.crt
/etc/pki/tls/cert.pem
นอกจากนี้ยังสามารถพบได้/etc/ssl/certs/ca-bundle.crt
ตามที่/etc/ssl/certs
เป็นจริงเพียงแค่เชื่อมโยงไปถึง/etc/pki/tls/certs
แต่สถานที่นั้นไม่ได้เป็นที่ยอมรับและไม่ควรใช้สิ่งใดเลย RHEL ยังให้กำใน OpenSSL ของ 'ใบรับรองที่เชื่อถือได้' /etc/pki/tls/certs/ca-bundle.trust.crt
รูปแบบเป็น
สิ่งที่ถูกต้องที่คุณต้องทำคือใช้ไฟล์บันเดิลที่ระบบจัดให้ คำตอบของคุณจะได้ผล แต่ด้วยเหตุผลที่กล่าวมาข้างต้นฉันขอแนะนำTLS_CACERT=/etc/pki/tls/certs/ca-bundle.crt
หรือTLS_CACERT=/etc/pki/tls/cert.pem
มากกว่าTLS_CACERT=/etc/ssl/certs/ca-bundle.crt
นั้น
(ไม่มีอะไรใหม่ในระยะไกลในเรื่องนี้ btw แต่ความสับสนใน interwebs นั้นแพร่หลาย RH และอนุพันธ์ไม่เคยให้ไดเรกทอรีเต็มรูปแบบของใบรับรองเลยทีเดียวพวกเขาได้จัดทำไฟล์บันเดิลมาตั้งแต่ปี 2000 มันเป็น ย้ายจาก / usr / share / ssl เป็น / etc / pki / tls ในปี 2005 Debian มีทั้ง/etc/ssl/certs
เป็นไดเรกทอรี CApath-style และ/etc/ssl/certs/ca-certificates.crt
เป็นไฟล์บันเดิลมากหรือน้อยตั้งแต่ยุคหิน)