กําลังตรวจสอบชุดใบรับรอง

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

เอกสารนี้อธิบายวิธีตรวจสอบเชนใบรับรองก่อนอัปโหลดใบรับรองไปยัง คีย์สโตร์หรือ Trust Store ใน Apigee Edge กระบวนการนี้ใช้ชุดเครื่องมือ OpenSSL เพื่อตรวจสอบเชนใบรับรอง และใช้ได้กับทุกสภาพแวดล้อมที่มี OpenSSL

ก่อนเริ่มต้น

ก่อนที่จะใช้ขั้นตอนในเอกสารนี้ โปรดตรวจสอบว่าคุณเข้าใจหัวข้อต่อไปนี้

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

การตรวจสอบเรื่องและผู้ออกใบรับรองสำหรับเชนทั้งหมด

หากต้องการตรวจสอบเชนใบรับรองโดยใช้คำสั่ง OpenSSL ให้ทำตามขั้นตอนที่อธิบายไว้ใน ส่วนต่อไปนี้

การแยกเชนใบรับรอง

ก่อนตรวจสอบใบรับรอง คุณต้องแยกเชนใบรับรองออกเป็นใบรับรองที่แยกกัน โดยทำตามขั้นตอนต่อไปนี้

  1. เข้าสู่ระบบเซิร์ฟเวอร์ที่มี OpenSSL Client
  2. แยกเชนใบรับรองออกเป็นใบรับรองต่อไปนี้ (หากยังไม่ได้ดำเนินการ)
    • ใบรับรองเอนทิตี: entity.pem
    • ใบรับรองกลาง: intermediate.pem
    • ใบรับรองรูท: root.pem

รูปต่อไปนี้แสดงตัวอย่างเชนใบรับรอง

ลำดับของชุดใบรับรอง: ใบรับรองตัวตนไปยังใบรับรองกลางไปยังใบรับรองรูท

การยืนยันเรื่องและผู้ออกใบรับรอง

ส่วนนี้อธิบายวิธีรับเรื่องและผู้ออกใบรับรอง รวมถึงยืนยันว่า คุณมีเชนใบรับรองที่ถูกต้อง

  1. เรียกใช้คำสั่ง OpenSSL ต่อไปนี้เพื่อรับ Subject และ Issuer สำหรับใบรับรองแต่ละรายการในเชนจาก entity ถึง root และยืนยันว่าใบรับรองเหล่านั้นเป็นเชนใบรับรองที่เหมาะสม
    openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
        

    โดยที่ certificate คือชื่อของใบรับรอง

  2. ตรวจสอบว่าใบรับรองในเชนเป็นไปตามหลักเกณฑ์ต่อไปนี้
    • Subject ของใบรับรองแต่ละรายการตรงกับ Issuer ของใบรับรองก่อนหน้าในเชน (ยกเว้นใบรับรอง Entity)
    • Subject และ Issuer เหมือนกันสำหรับใบรับรองรูท

    หากใบรับรองในเชนเป็นไปตามหลักเกณฑ์เหล่านี้ ระบบจะถือว่าเชนใบรับรองสมบูรณ์และถูกต้อง

    ตัวอย่างการตรวจสอบเชนใบรับรอง

    ตัวอย่างต่อไปนี้เป็นเอาต์พุตของคำสั่ง OpenSSL สำหรับเชนใบรับรองตัวอย่างที่มีใบรับรอง 3 รายการ

    ใบรับรองเอนทิตี

    openssl x509 -text -in entity.pem | grep -E '(Subject|Issuer):'
    
    Issuer: C = US, O = Google Trust Services, CN = GTS CA 1O1
    Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.enterprise.apigee.com
            

    ใบรับรองกลาง

    openssl x509 -text -in intermediate.pem  | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: C = US, O = Google Trust Services, CN = GTS CA 1O1
            

    ใบรับรองรูท

    openssl x509 -text -in root.pem | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
            

    ในตัวอย่างที่แสดงด้านบน ให้สังเกตสิ่งต่อไปนี้

    • Subject ของใบรับรองกลางตรงกับ Issuer ของใบรับรองเอนทิตี
    • Subject ของใบรับรองรูทตรงกับ Issuer ของ ใบรับรองกลาง
    • Subject และ Issuer เหมือนกันในใบรับรองรูท

    จากตัวอย่างข้างต้น คุณจะยืนยันได้ว่าเชนใบรับรองตัวอย่างถูกต้อง

การยืนยันแฮชเรื่องและผู้ออกใบรับรอง

ส่วนนี้อธิบายวิธีรับแฮชเรื่องและผู้ออกใบรับรอง รวมถึง ยืนยันว่าคุณมีเชนใบรับรองที่ถูกต้อง

การตรวจสอบลำดับแฮชของใบรับรองเป็นแนวทางปฏิบัติที่ดีเสมอ เนื่องจากช่วยระบุปัญหาต่างๆ ได้ เช่น ชื่อสามัญ (CN) ของใบรับรองมีช่องว่างหรืออักขระพิเศษที่ไม่ต้องการ

  1. เรียกใช้คำสั่ง OpenSSL ต่อไปนี้เพื่อรับลำดับ hash สำหรับใบรับรองแต่ละรายการในเชนจาก entity ไปยัง root และยืนยันว่าใบรับรองเหล่านั้นเป็นเชนใบรับรองที่เหมาะสม
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    โดยที่ certificate คือชื่อของใบรับรอง

  3. ตรวจสอบว่าใบรับรองในเชนเป็นไปตามหลักเกณฑ์ต่อไปนี้
    • Subject ของใบรับรองแต่ละรายการตรงกับ Issuer ของใบรับรองก่อนหน้า ในเชน (ยกเว้นใบรับรอง Entity)
    • Subject และ Issuer เหมือนกันสำหรับใบรับรองรูท

    หากใบรับรองในเชนเป็นไปตามหลักเกณฑ์เหล่านี้ ระบบจะถือว่าเชนใบรับรองสมบูรณ์และถูกต้อง

    ตัวอย่างการตรวจสอบเชนใบรับรองผ่านลำดับแฮช

    ตัวอย่างต่อไปนี้เป็นเอาต์พุตของคำสั่ง OpenSSL สำหรับเชนใบรับรองตัวอย่าง ที่มีใบรับรอง 3 รายการ

    openssl x509 -in entity.pem -hash -issuer_hash -noout
    c54c66ba #this is subject hash
    99bdd351 #this is issuer hash
        
    openssl x509 -in intermediate.pem -hash -issuer_hash -noout
    99bdd351
    4a6481c9
        
    openssl x509 -in root.pem -hash -issuer_hash -noout
    4a6481c9
    4a6481c9
        

    ในตัวอย่างที่แสดงด้านบน ให้สังเกตสิ่งต่อไปนี้

    • subject hash ของใบรับรองกลางตรงกับ issuer hash ของใบรับรองเอนทิตี
    • subject hash ของใบรับรองรูทตรงกับ issuer hash ของใบรับรองผู้ออกใบรับรอง
    • subject และ issuer hash เหมือนกันในใบรับรองรูท

    จากตัวอย่างข้างต้น คุณจะยืนยันได้ว่าเชนใบรับรองตัวอย่างถูกต้อง

การยืนยันการหมดอายุของใบรับรอง

ส่วนนี้อธิบายวิธีตรวจสอบว่าใบรับรองทั้งหมดในเชน หมดอายุแล้วหรือไม่ โดยใช้วิธีต่อไปนี้

  • รับวันที่เริ่มต้นและวันที่สิ้นสุดของใบรับรอง
  • รับสถานะการหมดอายุ

วันที่เริ่มต้นและวันที่สิ้นสุด

เรียกใช้คำสั่ง OpenSSL ต่อไปนี้เพื่อรับวันที่เริ่มต้นและวันที่สิ้นสุดสำหรับใบรับรองแต่ละรายการ ในเชนจาก entity ไปยัง root และยืนยันว่าใบรับรองทั้งหมด ในเชนมีผลบังคับใช้ (วันที่เริ่มต้นอยู่ก่อนวันนี้) และยังไม่หมดอายุ

ตัวอย่างการตรวจสอบการหมดอายุของใบรับรองผ่านวันที่เริ่มต้นและวันที่สิ้นสุด

openssl x509 -startdate -enddate -noout -in entity.pem
notBefore=Feb  6 21:57:21 2020 GMT
notAfter=Feb  4 21:57:21 2021 GMT
openssl x509 -startdate -enddate -noout -in intermediate.pem
notBefore=Jun 15 00:00:42 2017 GMT
notAfter=Dec 15 00:00:42 2021 GMT
openssl x509 -startdate -enddate -noout -in root.pem
notBefore=Apr 13 10:00:00 2011 GMT
notAfter=Apr 13 10:00:00 2022 GMT

สถานะการหมดอายุ

เรียกใช้คำสั่ง OpenSSL ต่อไปนี้เพื่อตรวจสอบว่าใบรับรองหมดอายุแล้วหรือ กำลังจะหมดอายุในอีก N seconds คำสั่งนี้จะแสดงสถานะการหมดอายุของ ใบรับรองในบริบทของวันที่ปัจจุบันในระบบ

openssl x509 -checkend <N Seconds> -noout -in certificate

โดยที่ certificate คือชื่อของใบรับรอง

ตัวอย่างการตรวจสอบการหมดอายุของใบรับรองผ่านตัวเลือก checkend

คำสั่งต่อไปนี้ใช้ 0 seconds เพื่อตรวจสอบว่าใบรับรองหมดอายุแล้วหรือไม่

openssl x509 -checkend 0 -noout -in entity.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in intermediate.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in root.pem
Certificate will not expire

ในตัวอย่างนี้ ข้อความ Certificate will not expire บ่งชี้ว่าใบรับรองยังไม่หมดอายุ