Certificate

Certificate Chain และ Chain of Trust คืออะไร

A
admin
18 มิถุนายน 2568 1 ครั้ง
แชร์:

Certificate Chain คืออะไร

Chain of Trust คือลำดับใบรับรองที่เชื่อมจากใบของเซิร์ฟเวอร์ (end-entity) ผ่านใบรับรองระดับกลางไปยังรูท CA ที่ไคลเอนต์เชื่อถืออยู่แล้ว หลักการ path validation อยู่ใน RFC 5280

โครงสร้างทั่วไป

code
Root CA (อยู่ใน trust store ของ OS/เบราว์เซอร์)
    └── Intermediate CA
            └── End-entity certificate (เว็บไซต์)

รูท CA มักไม่ออกใบให้เว็บไซต์โดยตรง เพื่อลดความเสี่ยงหากคีย์ออกใบถูกใช้บ่อย ใบระดับกลางทำหน้าที่ออกใบจริงและสามารถเพิกถอนได้โดยไม่ต้องเปลี่ยนรูททั้งระบบ

การตรวจสอบของไคลเอนต์

1. ตรวจลายเซ็นของใบ end-entity ว่าออกโดย intermediate ที่ระบุใน Issuer
2. ตรวจใบ intermediate ต่อไปจนถึงรูท
3. ตรวจช่วงอายุ, key usage, extended key usage (เช่น serverAuth) และนโยบายชื่อ
4. ถ้า path สร้างไม่ได้ การเชื่อมต่อ HTTPS จะล้มเหลวหรือแสดงคำเตือน

ปัญหาที่พบบ่อยคือเซิร์ฟเวอร์ส่งเฉพาะใบของเว็บไซต์ ไม่ส่ง intermediate บางระบบปฏิบัติการอาจดึง AIA ได้ แต่ไคลเอนต์จำนวนมากไม่ทำเช่นนั้น โดยเฉพาะมือถือและไลบรารี

วิธีตรวจและแก้

bash
openssl s_client -connect example.com:443 -showcerts

ดูว่ามีใบครบหรือไม่ และมีข้อความเช่น unable to get local issuer certificate หรือไม่

Apache

apache
SSLCertificateChainFile /path/to/intermediate.pem

หรือรวมใบเซิร์ฟเวอร์กับ intermediate ในไฟล์เดียวแล้วชี้ SSLCertificateFile

Nginx

nginx
ssl_certificate /path/to/fullchain.pem;

Let's Encrypt ให้ไฟล์ fullchain.pem สำหรับกรณีนี้โดยตรง

สรุป

chain ที่ไม่ครบทำให้เว็บเปิดได้บนบางเครื่องแต่พังบนเครื่องอื่น ควรทดสอบจากภายนอกและส่ง intermediate ครบทุกครั้ง

แหล่งอ้างอิง

หมวดหมู่: Certificate