พูดอย่างเคร่งครัดคุณไม่จำเป็นต้องใช้เชนเพื่อให้ SSL ทำงาน
สิ่งที่คุณมักจะต้องเป็นผู้SSLCertificateFileที่มีSSLCertificateKeyFileที่มีคีย์ที่ถูกต้องสำหรับการรับรองว่า
ปัญหาคือว่าถ้าคุณให้ Apache เป็นใบรับรองทั้งหมดที่ต้องให้กับการเชื่อมต่อกับลูกค้าคือใบรับรองซึ่งไม่ได้บอกเล่าเรื่องราวทั้งหมดเกี่ยวกับใบรับรอง SSL นั้น มันกำลังพูดว่า "ฉันลงชื่อใครบางคน แต่ฉันจะไม่บอกคุณเกี่ยวกับพวกเขา"
สิ่งนี้มักจะใช้งานได้ดีเนื่องจากระบบไคลเอนต์ส่วนใหญ่มีใบรับรอง CA จำนวนมาก (ทั้งรูทและสื่อกลาง) ซึ่งสามารถตรวจสอบความสัมพันธ์การลงนามที่ตรงกันเพื่อสร้างความไว้วางใจ อย่างไรก็ตามบางครั้งก็ใช้งานไม่ได้ ปัญหาที่คุณพบบ่อยที่สุดคือไคลเอนต์ที่ไม่ถือใบรับรองสำหรับ CA ระดับกลางที่ลงชื่อใบรับรองของคุณ
นั่นคือสิ่งที่ห่วงโซ่เข้ามา; มันช่วยให้ Apache แสดงให้ลูกค้าเห็นว่าสัมพันธภาพที่เชื่อถือได้มีลักษณะอย่างไรซึ่งสามารถช่วยให้ลูกค้ากรอกข้อมูลในช่องว่างระหว่างใบรับรองของคุณรูทที่พวกเขาไว้วางใจและสื่อกลางที่พวกเขาไม่ทราบ โซ่สามารถรวมอยู่ในการกำหนดค่าของคุณด้วยหนึ่งในสองวิธี:
- ฝังอยู่ในไฟล์เดียวกับที่คุณตั้งไว้สำหรับ
SSLCertificateFileบรรทัดใหม่หลังจากใบรับรองเซิร์ฟเวอร์ตามลำดับ (รูทควรอยู่ด้านล่าง) หากคุณตั้งขึ้นเช่นนี้คุณจะต้องชี้ไปยังแฟ้มเดียวกันกับSSLCertificateChainFileSSLCertificateFile
- ในไฟล์แยกต่างหากกำหนดค่าใน
SSLCertificateChainFileคำสั่ง; ใบรับรอง CA ที่ออกใบรับรองของเซิร์ฟเวอร์ควรเป็นอันดับแรกในไฟล์ตามด้วยรากอื่น ๆ
ตรวจสอบไฟล์ใบรับรองที่คุณมีตอนนี้ฉันกำลังเดิมพันว่าไม่มีข้อมูลลูกโซ่รวมอยู่ด้วย ซึ่งมักจะใช้งานได้ดี แต่ในที่สุดจะทำให้เกิดปัญหากับเบราว์เซอร์หรืออื่น ๆ
/etc/ssl,/usr/local/etc/sslหรือในsslที่เฉพาะเจาะจงไดเรกทอรีย่อยไปยังเว็บไซต์ (เช่น/home/www/example.com/dataมีเว็บไซต์แล้วhome/www/example.com/sslมีใบรับรอง) ที่