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