אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
במאמר הזה מוסבר איך לאמת שרשרת אישורים לפני שמעלים את האישור למאגר מפתחות או למאגר אישורים מהימנים ב-Apigee Edge. התהליך מסתמך על ערכת הכלים OpenSSL כדי לאמת את שרשרת האישורים, והוא רלוונטי לכל סביבה שבה OpenSSL זמין.
לפני שמתחילים
לפני שמשתמשים בשלבים שמתוארים במאמר הזה, חשוב להבין את הנושאים הבאים:
- אם אתם לא מכירים את המושג שרשרת אישורים, כדאי לקרוא את המאמר בנושא שרשרת מהימנות.
- אם אתם לא מכירים את ספריית OpenSSL, כדאי לקרוא את המאמר בנושא OpenSSL.
- אם רוצים להשתמש בדוגמאות של שורת הפקודה במדריך הזה, צריך להתקין את הגרסה האחרונה של לקוח OpenSSL או לעדכן אליה.
- מוודאים שהאישורים הם בפורמט PEM. אם האישורים לא בפורמט PEM, צריך להשתמש בהוראות שבמאמר המרת אישורים לפורמט נתמך כדי להמיר אותם לפורמט PEM.
אימות הנושא והמונפק של האישור עבור השרשרת המלאה
כדי לאמת את שרשרת האישורים באמצעות פקודות OpenSSL, צריך לבצע את השלבים שמתוארים בקטעים הבאים:
- פיצול שרשרת האישורים
- אימות הנושא והמנפיק של האישור
- אימות נושא האישור והגיבוב של הגורם המנפיק
- אימות של תוקף האישור
פיצול שרשרת האישורים
לפני שמאמתים את האישור, צריך לפצל את שרשרת האישורים לאישורים נפרדים באמצעות השלבים הבאים:
- מתחברים לשרת שבו נמצא לקוח OpenSSL.
- מפצלים את שרשרת האישורים לאישורים הבאים (אם עדיין לא עשיתם זאת):
-
תעודה של הישות:
entity.pem -
אישור ביניים:
intermediate.pem -
אישור בסיס:
root.pem
באיור הבא מוצגת דוגמה לשרשרת אישורים:
אימות הנושא והמנפיק של האישור
בקטע הזה מוסבר איך מקבלים את הנושא ואת הגורם המנפיק של האישורים ואיך מוודאים שיש לכם שרשרת אישורים תקפה.
-
מריצים את פקודת OpenSSL הבאה כדי לקבל את
SubjectואתIssuerלכל אישור בשרשרת מ-entityעדroot, ומוודאים שהם יוצרים שרשרת אישורים תקינה:openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'כאשר certificate הוא שם האישור.
-
מוודאים שהאישורים בשרשרת עומדים בהנחיות הבאות:
-
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) של האישור.
- מריצים את הפקודה הבאה של OpenSSL כדי לקבל את רצף
hashשל כל אישור בשרשרת מ-entityעדroot, ומוודאים שהם יוצרים שרשרת אישורים תקינה. - מוודאים שהאישורים בשרשרת עומדים בהנחיות הבאות:
-
Subjectשל כל אישור תואם ל-Issuerשל האישור הקודם בשרשרת (חוץ מאישורEntity). -
Subjectו-Issuerזהים לאישור הבסיס. -
subject hashשל אישור הביניים זהה ל-issuer hashשל אישור הישות. -
ה-
subject hashשל אישור הבסיס תואם ל-issuer hashשל אישור המנפיק. -
הערכים של
subjectו-issuer hashזהים באישור הבסיס.
openssl x509 -hash -issuer_hash -noout -in certificate
כאשר certificate הוא שם האישור.
אם האישורים בשרשרת עומדים בהנחיות האלה, שרשרת האישורים נחשבת שלמה ותקפה.
דוגמה לאימות שרשרת אישורים באמצעות רצף גיבוב
בדוגמה הבאה מוצג הפלט של פקודות 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
בדוגמה שלמעלה, אפשר לראות את הדברים הבאים:
מהדוגמה שלמעלה אפשר לראות ששרשרת האישורים לדוגמה תקפה.
אימות התפוגה של האישור
בקטע הזה מוסבר איך לוודא שכל האישורים בשרשרת לא פגו, באמצעות השיטות הבאות:
- מציינים את תאריכי ההתחלה והסיום של האישור.
- קבלת סטטוס התפוגה.
תאריך התחלה וסיום
מריצים את הפקודה הבאה של 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מציינת שתוקף האישור עדיין לא פג.