אימות שרשרת האישורים

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

במאמר הזה מוסבר איך לאמת שרשרת אישורים לפני שמעלים את האישור למאגר מפתחות או למאגר אישורים מהימנים ב-Apigee Edge. התהליך מסתמך על ערכת הכלים OpenSSL כדי לאמת את שרשרת האישורים, והוא רלוונטי לכל סביבה שבה OpenSSL זמין.

לפני שמתחילים

לפני שמשתמשים בשלבים שמתוארים במאמר הזה, חשוב להבין את הנושאים הבאים:

  • אם אתם לא מכירים את המושג שרשרת אישורים, כדאי לקרוא את המאמר בנושא שרשרת מהימנות.
  • אם אתם לא מכירים את ספריית OpenSSL, כדאי לקרוא את המאמר בנושא OpenSSL.
  • אם רוצים להשתמש בדוגמאות של שורת הפקודה במדריך הזה, צריך להתקין את הגרסה האחרונה של לקוח OpenSSL או לעדכן אליה.
  • מוודאים שהאישורים הם בפורמט PEM. אם האישורים לא בפורמט PEM, צריך להשתמש בהוראות שבמאמר המרת אישורים לפורמט נתמך כדי להמיר אותם לפורמט PEM.

אימות הנושא והמונפק של האישור עבור השרשרת המלאה

כדי לאמת את שרשרת האישורים באמצעות פקודות OpenSSL, צריך לבצע את השלבים שמתוארים בקטעים הבאים:

פיצול שרשרת האישורים

לפני שמאמתים את האישור, צריך לפצל את שרשרת האישורים לאישורים נפרדים באמצעות השלבים הבאים:

  1. מתחברים לשרת שבו נמצא לקוח OpenSSL.
  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 עבור שרשרת אישורים לדוגמה שמכילה שלושה אישורים:

    תעודת ישות

    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 זהים באישור הבסיס.

    מהדוגמה שלמעלה אפשר לראות ששרשרת האישורים לדוגמה תקפה.

אימות נושא האישור והגיבוב (hash) של המנפיק

בקטע הזה מוסבר איך מקבלים את הגיבוב של הנושא והמנפיק של האישורים ואיך מוודאים שיש לכם שרשרת אישורים תקפה.

תמיד מומלץ לאמת את רצף הגיבוב של האישורים, כי זה יכול לעזור לזהות בעיות כמו רווח לא רצוי או תווים מיוחדים בשם הנפוץ (CN) של האישור.

  1. מריצים את הפקודה הבאה של OpenSSL כדי לקבל את רצף hash של כל אישור בשרשרת מ-entity עד root, ומוודאים שהם יוצרים שרשרת אישורים תקינה.
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    כאשר certificate הוא שם האישור.

  3. מוודאים שהאישורים בשרשרת עומדים בהנחיות הבאות:
    • Subject של כל אישור תואם ל-Issuer של האישור הקודם בשרשרת (חוץ מאישור Entity).
    • Subject ו-Issuer זהים לאישור הבסיס.

    אם האישורים בשרשרת עומדים בהנחיות האלה, שרשרת האישורים נחשבת שלמה ותקפה.

    דוגמה לאימות שרשרת אישורים באמצעות רצף גיבוב

    בדוגמה הבאה מוצג הפלט של פקודות OpenSSL עבור שרשרת אישורים לדוגמה שכוללת שלושה אישורים:

    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מציינת שתוקף האישור עדיין לא פג.