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

התחילו בקריאת המכל במקום לרוקן אותו.

מה באמת מכיל קובץ PKCS12

מכל PKCS12 מכיל תעודה אחת או יותר, אולי מפתח פרטי, ו-message authentication code על התוכן. התעודות עשויות לכלול את תעודת העלה של זהות הלקוח שלכם ואת התעודות הביניים שמקשרות אותה ל-CA. המפתח, כשהוא קיים, הוא מה שהופך את הקובץ לסוד ולא למסמך.

ההבחנה הזו היא הסיבה ש--nokeys קיים ושהוא הדגל שהמשימה הזו צריכה.

קראו את החבילה בלי לכתוב את המפתח

צורת הבדיקה מדפיסה את המבנה ואת פרטי האלגוריתמים ולא כותבת דבר: openssl pkcs12 -in client.p12 -info -noout. היא מבקשת את סיסמת הייבוא, שזה המקום הנכון לערך הזה, והיא אומרת לכם אם הקובץ מכיל מפתח בכלל. השתמשו ב--passin env:PKCS12_PASS כשהסיסמה לא ניתנת להקלדה, כי סיסמה בתוך פקודת shell היא סיסמה ברשימת התהליכים. השלב הזה לא מייצא דבר, וזו כל הנקודה.

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

השתמשו בדגל -nokeys ואל תבלבלו אותו עם -nocerts

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

הצורה בת שתי השורות שמייצרת קובץ תעודות וקובץ CA, ושום דבר אחר, היא:

openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pem

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

בדקו את הפלט, לא את קוד היציאה

סטטוס יציאה אפס אומר שהפקודה רצה, לא שהקובץ מכיל את מה שאתם מצפים. ספרו את התעודות בפלט וקראו את ה-subject ואת התאריכים: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint. השוו את טביעת האצבע לזו שצוות התמיכה מצפה לה, כי חבילה עם שתי תעודות לקוח מייצרת קובץ עם שני בלוקים ורוב הכלים קוראים רק את הראשון. מטרה, אמון והתאמת מפתח הם שוב בדיקות נפרדות.

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

החליטו אם אתם צריכים קבצים בכלל

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

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

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