โครงสร้างใบรับรอง X.509
ตรวจสอบฟิลด์ภายในใบรับรองดิจิทัล ได้แก่ หัวเรื่อง ผู้ออกใบรับรอง ระยะเวลาที่มีผลใช้ได้ กุญแจสาธารณะ และส่วนขยาย พร้อมทำความเข้าใจความหมายของแต่ละรายการ
โครงสร้างใบรับรอง X.509 เป็นบทเรียน Security+ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Security+ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Security+ Academy มีบทเรียนทั้งหมด 4 บทเรียน
Certificate X.509 คืออะไร
Certificate X.509 คือเอกสารดิจิทัลมาตรฐานที่เชื่อมโยงกุญแจสาธารณะเข้ากับข้อมูลระบุตัวตน มาตรฐาน X.509 (กำหนดไว้ใน RFC 5280) ระบุรูปแบบ ฟิลด์ และส่วนขยายที่ใช้ในใบรับรองดิจิทัลทั่วโลก ใบรับรอง TLS/HTTPS, ใบรับรองอีเมล S/MIME, ใบรับรองสำหรับลงนามโค้ด และใบรับรองสำหรับการยืนยันตัวตนของไคลเอ็นต์ทุกฉบับใช้รูปแบบ X.509 การทำความเข้าใจโครงสร้างของใบรับรอง X.509 ช่วยให้คุณอ่านข้อมูลใบรับรอง วินิจฉัยข้อผิดพลาดของใบรับรอง และตัดสินใจเกี่ยวกับการนำใบรับรองไปใช้งานและการตรวจสอบความถูกต้องได้อย่างมีข้อมูล
# View an X.509 certificate in human-readable form
openssl x509 -in certificate.pem -noout -text
# Or view a website's certificate directly
openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -textVersion, Serial Number และ Algorithm
ฟิลด์แรก ๆ ในใบรับรอง X.509 ใช้กำหนดข้อมูลระบุตัวตนพื้นฐาน Version: X.509 v3 เป็นมาตรฐานปัจจุบัน (v3 เพิ่มส่วนขยายเข้ามา) Serial Number: จำนวนเต็มที่ไม่ซ้ำกันซึ่ง CA ผู้ออกใบรับรองกำหนดให้ เพื่อระบุใบรับรองรายการนี้โดยเฉพาะ — ใช้ใน CRL (รายการเพิกถอน) เพื่อเพิกถอนใบรับรองแต่ละรายการ Signature Algorithm: ระบุ Algorithm ที่ CA ใช้ลงนามใบรับรอง (เช่น sha256WithRSAEncryption หรือ ecdsa-with-SHA256) ฟิลด์นี้ปรากฏสองครั้ง ได้แก่ใน TBSCertificate หนึ่งครั้ง และในตัวห่อ Signature ภายนอกอีกหนึ่งครั้ง โดยทั้งสองค่าต้องตรงกัน
# Certificate header fields
# Version: 3 (v3 = supports extensions)
# Serial Number:
# 30:4b:7e:bf:36:e3:46:a8
# Signature Algorithm: sha256WithRSAEncryption
# The serial number is used for revocation:
# CRL lists serial numbers of revoked certificates from this CAฟิลด์ Issuer และ Subject
ฟิลด์สำคัญสองฟิลด์ในใบรับรองใช้ระบุฝ่ายต่าง ๆ ที่เกี่ยวข้อง ฟิลด์ Issuer ระบุ CA ที่ลงนามใบรับรอง (เช่น CN=DigiCert Global CA G2, O=DigiCert Inc, C=US) ฟิลด์ Subject ระบุเอนทิตีที่ได้รับใบรับรอง (เช่น CN=*.example.com, O=Example Corp, C=US) สำหรับใบรับรอง TLS ส่วนขยาย Common Name (CN) หรือ Subject Alternative Name (SAN) ของ Subject จะระบุชื่อโดเมนที่ใบรับรองใช้ได้ เบราว์เซอร์จะเปรียบเทียบชื่อโฮสต์ที่ร้องขอกับฟิลด์เหล่านี้
# Extract Issuer and Subject
openssl x509 -in cert.pem -noout -subject -issuer
# subject=CN = *.google.com, O = Google LLC, L = Mountain View, ST = California, C = US
# issuer=CN = GTS CA 1C3, O = Google Trust Services LLC, C = US
# Check Subject Alternative Names (critical for hostname validation)
openssl x509 -in cert.pem -noout -ext subjectAltName
# DNS:*.google.com, DNS:google.comระยะเวลาความถูกต้อง: notBefore และ notAfter
ระยะเวลาความถูกต้องกำหนดช่วงเวลาที่ใบรับรองใช้งานได้ โดยประกอบด้วย Timestamp สองค่า ได้แก่ notBefore (ใบรับรองยังไม่ถูกต้องก่อนวันที่นี้) และ notAfter (ใบรับรองหมดอายุหลังวันที่นี้) ไคลเอ็นต์ TLS จะตรวจสอบว่าเวลาปัจจุบันอยู่ภายในช่วงเวลานี้ ใบรับรองที่นำเสนออยู่นอกระยะเวลาความถูกต้องจะทำให้เบราว์เซอร์แสดงข้อผิดพลาดของใบรับรองและต้องต่ออายุ แนวปฏิบัติที่ดีในปัจจุบันคือการออกใบรับรองอายุสั้น (90 วัน เช่นที่ Let's Encrypt ดำเนินการ) เพื่อลดความเสี่ยงหากกุญแจส่วนตัวถูกโจมตีระหว่างวันที่ออกใบรับรองกับวันหมดอายุ
# Check certificate expiry dates
openssl x509 -in cert.pem -noout -dates
# notBefore=Jan 1 00:00:00 2026 GMT
# notAfter=Mar 31 23:59:59 2026 GMT
# Check how many days until expiry
echo | openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -enddate
# notAfter=Jun 15 12:00:00 2026 GMTฟิลด์กุญแจสาธารณะ
ข้อมูลหลักของใบรับรองอยู่ในฟิลด์ Subject Public Key Info ซึ่งมีกุญแจสาธารณะที่กำลังรับรองและระบุ Algorithm ที่ใช้กับกุญแจนั้น สำหรับใบรับรอง RSA ฟิลด์นี้มีโมดูลัสและเลขชี้กำลังของกุญแจสาธารณะ RSA รวมถึงความยาวเป็นบิต (2048, 4096) สำหรับใบรับรอง ECC ฟิลด์นี้มีชื่อเส้นโค้ง (เช่น prime256v1) และจุดของกุญแจสาธารณะ CA ไม่ได้สร้างคู่กุญแจนี้ — ผู้ร้องขอใบรับรองจะสร้างคู่กุญแจของตนเองและส่งเฉพาะกุญแจสาธารณะใน Certificate Signing Request (CSR)
# Generate a key pair and CSR (Certificate Signing Request)
# First, generate the private key
openssl genrsa -out server.key 2048
# Create a CSR containing the public key and subject info
openssl req -new -key server.key -out server.csr \
-subj '/CN=www.example.com/O=Example Corp/C=US'
# The CSR is sent to the CA for signing
# The CA returns the signed X.509 certificate
# Private key NEVER leaves your possessionส่วนขยาย X.509 v3
X.509 v3 นำเสนอส่วนขยายที่เพิ่มความสามารถของใบรับรองอย่างมาก ส่วนขยายอาจเป็นส่วนขยายที่สำคัญ (ไคลเอ็นต์ที่ประมวลผลส่วนขยายนี้ไม่ได้ต้องปฏิเสธใบรับรอง) หรือส่วนขยายที่ไม่สำคัญ (สามารถละเว้นได้หากไม่เข้าใจ) ส่วนขยายสำคัญได้แก่ Subject Alternative Name (SAN) — ชื่อโดเมนหรือ IP เพิ่มเติมที่ใบรับรองครอบคลุม Key Usage — จำกัดการดำเนินการที่สามารถใช้กุญแจได้ (ลายเซ็นดิจิทัล การเข้ารหัสกุญแจ) Extended Key Usage — จำกัดวัตถุประสงค์เพิ่มเติม (การยืนยันตัวตนเซิร์ฟเวอร์ TLS การยืนยันตัวตนไคลเอ็นต์ การลงนามโค้ด) และ Basic Constraints — ระบุว่า Subject เป็น CA หรือไม่
# View X.509 v3 extensions
openssl x509 -in cert.pem -noout -text | grep -A 20 'X509v3 extensions'
# X509v3 Key Usage: critical
# Digital Signature, Key Encipherment
# X509v3 Extended Key Usage:
# TLS Web Server Authentication, TLS Web Client Authentication
# X509v3 Subject Alternative Name:
# DNS:example.com, DNS:www.example.com
# X509v3 Basic Constraints: critical
# CA:FALSESubject Alternative Name (SAN) เทียบกับ Common Name
ในอดีต ฟิลด์ Common Name (CN) ในฟิลด์ Subject ที่ใช้แยกแยะจะใช้สำหรับชื่อโดเมนหลัก ใบรับรองสมัยใหม่ใช้ Subject Alternative Names (SANs) แทน เนื่องจากเบราว์เซอร์เลิกใช้การจับคู่ตาม CN (RFC 2818) และหันมาใช้ SANs แทน SANs ช่วยให้ใบรับรองหนึ่งฉบับครอบคลุมหลายโดเมน (ใบรับรองหลาย SAN) หรือทุกโดเมนย่อยของโดเมนหนึ่ง (ใบรับรองไวลด์การ์ด: *.example.com) ไวลด์การ์ดของ SAN ครอบคลุมได้เพียงหนึ่งระดับเท่านั้น — *.example.com ครอบคลุม www.example.com แต่ไม่ครอบคลุม sub.www.example.com
จุดแจกจ่าย CRL และส่วนขยาย OCSP
ส่วนขยายสำคัญสองรายการจะบอกไคลเอ็นต์ถึงวิธีตรวจสอบว่าใบรับรองถูกเพิกถอนก่อนวันหมดอายุหรือไม่ CRL Distribution Points (CDP): มี URL ที่สามารถดาวน์โหลด Certificate Revocation List ของ CA ได้ Authority Information Access (AIA): มี URL ของตัวตอบสนอง OCSP (Online Certificate Status Protocol) ของ CA สำหรับตรวจสอบการเพิกถอนแบบเรียลไทม์ ไคลเอ็นต์สมัยใหม่มักเลือกใช้ OCSP มากกว่าการดาวน์โหลด CRL เนื่องจาก CRL อาจเป็นไฟล์ขนาดใหญ่ ลายเซ็นดิจิทัลของ CA บนการตอบกลับ OCSP ช่วยให้ไคลเอ็นต์ได้รับข้อมูลสถานะการเพิกถอนที่แท้จริง
# Check OCSP status of a certificate
openssl ocsp -issuer intermediate_ca.pem \
-cert server_cert.pem \
-url http://ocsp.digicert.com \
-text
# Response shows: good, revoked, or unknown
# server_cert.pem: good
# This Update: Jun 21 00:00:00 2026 GMTรูปแบบใบรับรอง: PEM, DER, PFX
ใบรับรอง X.509 มีรูปแบบการเข้ารหัสหลายแบบที่คุณจะพบในการใช้งานจริง PEM (Privacy Enhanced Mail): DER ที่เข้ารหัสแบบ base64 และห่อด้วยส่วนหัว -----BEGIN CERTIFICATE----- อ่านได้โดยมนุษย์ และใช้บน Linux/Apache/nginx DER (Distinguished Encoding Rules): รูปแบบไบนารี ใช้กับแอปพลิเคชัน Java และบริบทบางประเภทบน Windows PFX/PKCS#12: รูปแบบคอนเทนเนอร์ที่รวมใบรับรอง สายโซ่ของใบรับรอง และกุญแจส่วนตัวไว้ในไฟล์เดียวที่ป้องกันด้วยรหัสผ่าน ใช้ใน Windows IIS และเมื่อต้อง Export ใบรับรองพร้อมกุญแจส่วนตัว P7B/PKCS#7: มีเฉพาะสายโซ่ของใบรับรอง ไม่มี Private Key และใช้ในที่เก็บใบรับรองของ Windows
# Convert between certificate formats
# PEM to DER
openssl x509 -in cert.pem -outform DER -out cert.der
# DER to PEM
openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem
# Export certificate + private key to PFX (for Windows IIS)
openssl pkcs12 -export -in cert.pem -inkey private.key \
-certfile chain.pem -out cert.pfx -passout pass:ExportPasswordCertificate Transparency (บันทึก CT)
Certificate Transparency (CT) คือกรอบการทำงานที่กำหนดให้ CA บันทึกใบรับรองที่ออกทั้งหมดลงในบันทึกที่สาธารณชนตรวจสอบได้ วิธีนี้ช่วยให้ทุกคนติดตามใบรับรองที่ไม่ได้รับอนุญาตซึ่งออกให้โดเมนของตนได้ Chrome และ Safari กำหนดให้ใบรับรอง TLS ต้องมีรายการอยู่ในบันทึก CT SCT (Signed Certificate Timestamp) คือหลักฐานว่ามีการบันทึกอยู่ในบันทึก โดยฝังอยู่ในใบรับรองหรือส่งผ่านส่วนขยาย TLS บันทึก CT ช่วยเปิดเผยการออกใบรับรองผิดพลาดได้อย่างรวดเร็ว — หาก CA ออกใบรับรองสำหรับโดเมนของคุณอย่างไม่ถูกต้อง คุณจะเห็นใบรับรองนั้นในบันทึกอย่าง crt.sh ก่อนที่ผู้โจมตีจะนำไปใช้ในทางที่ผิดได้
# Search for all certificates issued for a domain using crt.sh
# This would be done via browser or API:
# https://crt.sh/?q=example.com
# Check CT log inclusion in a certificate
openssl x509 -in cert.pem -noout -text | grep -A 5 'CT Precertificate'
# X509v3 extension: CT Precertificate SCTs (critical)
# Signed Certificate Timestamp:
# Version: v1 (0x0)
# Log ID: A4:B9...ลายเซ็น CA บนใบรับรอง
องค์ประกอบสุดท้ายของใบรับรอง X.509 คือลายเซ็นดิจิทัลของ CA CA จะคำนวณแฮชของข้อมูลใบรับรองทั้งหมด (TBSCertificate) แล้วลงนามแฮชนั้นด้วยกุญแจส่วนตัวของตนเอง ลายเซ็นนี้ทำให้ใบรับรองน่าเชื่อถือ — ทุกคนสามารถตรวจสอบได้โดยใช้กุญแจสาธารณะของ CA (ซึ่งพบได้ในใบรับรองของ CA เอง Algorithm ลายเซ็นที่ใช้ (ระบุไว้ในฟิลด์ลายเซ็น) ต้องตรงกับที่ระบุไว้ก่อนหน้านี้ในใบรับรอง การแก้ไขใบรับรองหลังจากลงนามแล้วจะทำให้ลายเซ็นใช้การไม่ได้ จึงช่วยรับรองความถูกต้องครบถ้วนของใบรับรอง
# Verify that a certificate was signed by a specific CA
openssl verify -CAfile ca_chain.pem server_cert.pem
# server_cert.pem: OK
# If the signature is invalid or the chain is broken:
# server_cert.pem: C = US, O = Example, CN = www.example.com
# error 20 at 0 depth lookup: unable to get local issuer certificateตรวจสอบอย่างรวดเร็ว
ทดสอบความเข้าใจแนวคิด CompTIA Security+ (SY0-701) จากบทเรียนนี้
ทบทวนบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า Certificate X.509 ประกอบด้วย Version, Serial Number, Issuer, Subject, ระยะเวลาความถูกต้อง, กุญแจสาธารณะ และ ส่วนขยาย v3 ส่วนขยาย SANควบคุมชื่อโฮสต์ที่ใบรับรองครอบคลุม ส่วนขยาย CDP และ AIA ชี้ไปยังปลายทางสำหรับตรวจสอบการเพิกถอน และ บันทึก CT ให้เส้นทางการตรวจสอบสาธารณะของการออกใบรับรอง ต่อไปเราจะศึกษา วงจรชีวิตและการเพิกถอน Certificate
คำถามที่พบบ่อย
บทเรียน “โครงสร้างใบรับรอง X.509” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โครงสร้างใบรับรอง X.509” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Security+ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Security+ Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โครงสร้างใบรับรอง X.509”
ตรวจสอบฟิลด์ภายในใบรับรองดิจิทัล ได้แก่ หัวเรื่อง ผู้ออกใบรับรอง ระยะเวลาที่มีผลใช้ได้ กุญแจสาธารณะ และส่วนขยาย พร้อมทำความเข้าใจความหมายของแต่ละรายการ คุณปฏิบัติ Security+ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Security+ Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Security+ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “โครงสร้างใบรับรอง X.509” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Security+ Academy นี้ได้ไหม
ได้ บทเรียน Security+ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- หน่วยงานออกใบรับรองและสายโซ่ความน่าเชื่อถือ
- โครงสร้างใบรับรอง X.509
- วงจรชีวิตและการเพิกถอนใบรับรอง
- กรณีการใช้งาน PKI: HTTPS, S/MIME และการลงนามโค้ด