การตรวจสอบใบรับรองใน TLS
ติดตามวิธีที่ไคลเอนต์ตรวจสอบสายโซ่ใบรับรองของเซิร์ฟเวอร์
การตรวจสอบใบรับรองใน TLS เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องตรวจสอบใบรับรอง
หากไม่มีการตรวจสอบใบรับรอง อาจสร้างการเชื่อมต่อ TLS ไปยังผู้โจมตีที่ปลอมตัวเป็นเซิร์ฟเวอร์ได้ ซึ่งเรียกว่าการโจมตีแบบคนกลาง การตรวจสอบใบรับรองช่วยยืนยันว่าคุณกำลังสื่อสารกับเซิร์ฟเวอร์ตัวจริงที่ควบคุมคีย์ส่วนตัว
ช่องข้อมูลใบรับรอง X.509 ที่เกี่ยวข้องกับ TLS
ช่องข้อมูลสำคัญ ได้แก่ เจ้าของใบรับรอง, SubjectAltName (ชื่อ DNS/ที่อยู่ IP), ผู้ออกใบรับรอง (CA ที่ลงลายเซ็น), ช่วงเวลาที่ใช้ได้ (notBefore/notAfter), คีย์สาธารณะ และลายเซ็น เบราว์เซอร์จะตรวจสอบข้อมูลทั้งหมดนี้
สายโซ่แห่งความไว้วางใจ
ใบรับรองเซิร์ฟเวอร์ → ใบรับรอง CA ระดับกลาง → ใบรับรอง CA ราก CA รากลงลายเซ็นให้ตัวเอง และติดตั้งไว้ล่วงหน้าในที่เก็บใบรับรองที่เชื่อถือได้ของ OS หรือเบราว์เซอร์ เซิร์ฟเวอร์จะส่งใบรับรองของตนพร้อมใบรับรอง CA ระดับกลางในข้อความ Certificate ระหว่างการจับมือ TLS
การตรวจสอบลายเซ็น
ใบรับรองแต่ละใบลงลายเซ็นโดยผู้ออกใบรับรองที่อยู่เหนือขึ้นไป ไคลเอ็นต์จะตรวจสอบลายเซ็น(cert_n) โดยใช้ public_key(cert_{n+1}) หากลายเซ็นใดไม่ถูกต้อง จะปฏิเสธสายโซ่ทั้งหมด ส่วนใบรับรองรากได้รับความไว้วางใจจากการติดตั้งไว้ล่วงหน้า ไม่ใช่จากการตรวจสอบลายเซ็น
การตรวจสอบชื่อ
ไคลเอ็นต์ตรวจสอบว่าชื่อโฮสต์ของเซิร์ฟเวอร์ตรงกับชื่อเจ้าของใบรับรองหรือ SubjectAltName (รายการ DNS) หรือไม่ อักขระแทน (*.example.com) จะจับคู่ได้เพียงหนึ่งป้ายชื่อ ตั้งแต่ปี 2000 เป็นต้นมา SAN มีลำดับความสำคัญเหนือ CN ในการจับคู่ชื่อโฮสต์
การตรวจสอบช่วงเวลาที่ใช้ได้
ไคลเอ็นต์ตรวจสอบ notBefore ≤ now ≤ notAfter สำหรับใบรับรองทุกใบในสายโซ่ ใบรับรองที่หมดอายุจะถูกปฏิเสธแม้ลายเซ็นจะถูกต้อง อายุการใช้งานของใบรับรองสั้นลงเรื่อย ๆ โดยปัจจุบันเบราว์เซอร์จำกัดไว้ที่ประมาณ 398 วัน
การเพิกถอน: CRL
CA เผยแพร่รายการเพิกถอนใบรับรอง (CRL) ซึ่งเป็นรายการหมายเลขซีเรียลของใบรับรองที่ถูกเพิกถอนและมีลายเซ็นกำกับ ไคลเอ็นต์จะดาวน์โหลด URL ของ CRL จากส่วนขยายจุดแจกจ่าย CRL ของใบรับรอง แล้วตรวจสอบว่ามีหมายเลขซีเรียลดังกล่าวหรือไม่
การเพิกถอน: OCSP
โพรโทคอลสถานะใบรับรองออนไลน์ (OCSP) ช่วยให้ไคลเอ็นต์สอบถามตัวตอบกลับ OCSP ของ CA เพื่อดูสถานะของใบรับรองทีละใบได้ เร็วกว่า CRL แต่เพิ่มความหน่วง การแนบคำตอบ OCSP ทำให้เซิร์ฟเวอร์รวมคำตอบ OCSP ที่มีลายเซ็นไว้ในการจับมือ TLS
ความโปร่งใสของใบรับรอง
CT (RFC 6962) กำหนดให้ CA บันทึกใบรับรองที่ออกทั้งหมดลงในบันทึกสาธารณะที่เพิ่มข้อมูลต่อท้ายได้เท่านั้น เบราว์เซอร์จะตรวจสอบค่าประทับเวลาใบรับรองที่มีลายเซ็น (SCT) ในใบรับรองหรือส่วนขยาย TLS วิธีนี้ป้องกันไม่ให้การออกใบรับรองโดยมิชอบถูกตรวจไม่พบ
การตรึงคีย์
การตรึงคีย์สาธารณะ HTTP (HPKP ซึ่งเลิกใช้แล้ว) และการตรึงใบรับรองในแอปมือถือ จะกำหนดคีย์สาธารณะหรือแฮชใบรับรองที่เจาะจงไว้ หากเซิร์ฟเวอร์แสดงใบรับรองอื่น การเชื่อมต่อจะถูกปฏิเสธแม้ใบรับรองนั้นจะถูกต้องก็ตาม วิธีนี้ป้องกันการโจมตีจากการที่ CA ถูกโจมตี
ข้อผิดพลาดในการตรวจสอบที่พบบ่อย
ERR_CERT_AUTHORITY_INVALID: รากไม่อยู่ในรายการที่เชื่อถือได้ ERR_CERT_DATE_INVALID: หมดอายุ ERR_CERT_COMMON_NAME_INVALID: ชื่อโฮสต์ไม่ตรงกัน NET::ERR_CERT_REVOKED: OCSP หรือ CRL ระบุว่าถูกเพิกถอน แต่ละข้อสอดคล้องกับความล้มเหลวในขั้นตอนการตรวจสอบเฉพาะรายการ
ตรวจสอบความเข้าใจ
การแนบคำตอบ OCSP ช่วยให้เกิดผลลัพธ์ใด
สรุป
การตรวจสอบใบรับรองใน TLS ประกอบด้วยการตรวจสอบสายโซ่ การตรวจสอบลายเซ็น การจับคู่ชื่อ ช่วงเวลาที่ใช้ได้ และการตรวจสอบการเพิกถอน ขั้นต่อไป: การโจมตี TLS ในอดีตและวิธีที่ TLS 1.3 ลดผลกระทบจากการโจมตีเหล่านั้น
คำถามที่พบบ่อย
บทเรียน “การตรวจสอบใบรับรองใน TLS” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตรวจสอบใบรับรองใน TLS” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบใบรับรองใน TLS”
ติดตามวิธีที่ไคลเอนต์ตรวจสอบสายโซ่ใบรับรองของเซิร์ฟเวอร์ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การตรวจสอบใบรับรองใน TLS” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แฮนด์เชก TLS 1.3 ทีละขั้นตอน
- ชั้นระเบียน TLS และชุดรหัสเข้ารหัส
- การตรวจสอบใบรับรองใน TLS
- การโจมตี TLS: BEAST, POODLE และการลดระดับ