האותיות בהסבר של RSA שמות שדות בתוך אובייקט אחד, לא קבצים שכלי PKI מוציא. קובץ מפתח פרטי מחזיק מבנה ששדותיו הראשונים ציבוריים ושדותיו המאוחרים אסור להם לעזוב את המכונה שמסיימת את המנהרה. בין שתי העובדות האלה נמצאות רוב השאלות המעשיות איזה קובץ עונה על איזו שאלה. ספר זה קורא תחילה את המבנה, ואחר כך את הפקודות שבוחנות אותו בלי לשפוך אותו.

ודאו שהמפתח הוא RSA לפני חיפוש ראשוניים

תעודה מוכיחה שמפתח כלשהו קיים ושהוא נחתם; היא אינה מוכיחה שהמפתח הוא RSA. אפשר לבנות מערכות על עקומות אליפטיות או Ed25519, ואותה פריסת תיקיות משרתת את כולן. בדקו את האלגוריתם לפני שתתחילו לחפש גורמים ראשוניים שמעולם לא היו שם.

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

openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text

הגרסה חשובה כי שמות האפשרויות זזו בין מהדורות ראשיות. בפלט התעודה מצאו את שורת אלגוריתם המפתח הציבורי ואת גודל המפתח; בפלט המפתח מפתח RSA מדפיס מודולוס ומעריך ציבורי. מפתח של עקומה אליפטית מדפיס במקום זאת עקומה בשם, ושום חיפוש לא יפיק ממנו n או q.

קראו את המבנה במקום את ה-base64

PEM הוא base64 עטוף בשורות כותרת, ופענוח שלו נותן DER, כלומר מבנה מסודר ולא מספר שלם ענק אחד. מפתחות RSA פרטיים נוסעים בשני מכילים נפוצים, PKCS#1 ו-PKCS#8, ושניהם מתכנסים לאותה קבוצת מספרים.

במקרה של שני ראשוניים המבנה הפרטי נושא תשעה שדות: גרסה, המודולוס n, המעריך הציבורי e, המעריך הפרטי d, הראשוניים p ו-q, שני מעריכי CRT ומקדם CRT. RFC 8017 סעיף A.1 מגדיר את הרכיבים האלה ואת פריסת ASN.1, והוא גם מתיר יותר משני ראשוניים, ולכן מנתח כללי יכול להדפיס רשומות ראשוניים נוספות. שימו לב לסדר, כי הוא מסביר טעות נפוצה: החצי הציבורי נשמר בתוך הקובץ הפרטי, ולכן נוכחות של שדה ציבורי אינה הופכת את הקובץ לבטוח לשיתוף. כל מה שאחריו הוא החומר שחייב להישאר במארח.

הקידוד מוסיף שכבה שקל להתבלבל בינה לבין התוכן. openssl asn1parse מצייר את המבנה כעץ כך שסדר השדות נעשה גלוי, והוא אינו מפענח דבר ואינו אומר אם המפתח שמיש.

התאימו תעודה למפתח בלי להדפיס את המפתח

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

openssl pkey -in vpn-client.key -pubout -out /tmp/key.pub
openssl x509 -in vpn-client.crt -pubkey -noout > /tmp/cert.pub
cmp /tmp/key.pub /tmp/cert.pub && echo MATCH

קבצים זהים פירושם שהתעודה נושאת את החצי הציבורי של אותו מפתח, והבדל פירושו שאתם מחזיקים בזוג הלא נכון. אי-ההתאמה הזו היא הסיבה הנפוצה ביותר למנהרה שמנהלת משא ומתן בשמחה ואז מסרבת לאימות. לאחר מכן הסירו את שני הקבצים הזמניים; אין בהם דבר סודי, אבל תיקיית עבודה נקייה קלה יותר לחשוב עליה באמצע תקרית.

דעו מה הקבצים השכנים אינם

תעודה אינה מפתח ציבורי מוצפן שהצד השני פותח עם תעודת ה-CA; היא קישור חתום בין מפתח ציבורי לבין נתוני זהות. מפתח החתימה הפרטי של ה-CA נשאר נפרד מהתעודה שלו עצמו ומכל מפתח לקוח. גם בקשה אינה תעודה: היא נושאת את המידע המבוקש ואת המפתח הציבורי עם חתימה על הבקשה, מה שהופך אותה לקלט רישום ולא להוכחת זכאות.

FileAnswersDoes not prove
vpn-client.keyPossession of the private keyThat the identity is enrolled
vpn-client.crtA signed binding of public key to identityThat the client holds the matching key
vpn-client.csrThe requested binding and public keyThat access was granted
dh2048.pemGroup parameters for key exchangeAny RSA component
crl.pemRevocation status for certificatesAnything about a private key

שניים מהרשומות האלה מתבלבלים עם פרמטרי RSA לעתים קרובות מספיק כדי לנקוב בשמם פעמיים. קובץ פרמטרים של Diffie-Hellman מכיל פרמטרי קבוצה להקמת מפתח ואין בו ראשוניים של RSA, אף שהוא מודפס גם כראשוני גדול. רשימת ביטול מפרסמת את מצב התעודות ואינה מקום שבו מעריך פרטי יכול להתחבא.

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

רשמו את ההתאמה ואז ודאו את לחיצת היד

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

openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates

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

לשם חזרה לאחור, שמרו את המפתח והתעודה הקודמים בתיקייה עם תאריך והחזירו את שניהם יחד, לעולם לא אחד מהשניים. מפתח בלי התעודה שלו ותעודה בלי המפתח שלה נכשלים אותו דבר מבחוץ, מה שהופך זוגות שחזרו חצי יקרים לפירוק בשתיים בלילה.

מאמרים קשורים