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

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

במסמך הזה מוסבר איך לאמת שרשרת אישורים לפני שמעלים את האישור ל-Keystore או ל-Truststore ב-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) של המנפיק

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