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

מוצג המסמך של 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 זהים עבור האישור הבסיסי (root).

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

    אימות שרשרת אישורים לדוגמה

    הדוגמה הבאה היא הפלט של פקודות 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) של המנפיק

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

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

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

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

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

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

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

    הדוגמה הבאה היא הפלט של פקודות 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 הוא שם האישור.

דוגמה לאימות תפוגת אישור באמצעות אפשרות של קצה ביקורת

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