ในความเป็นจริง 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เป็นไฟล์บันเดิลมากหรือน้อยตั้งแต่ยุคหิน)