בקשה לתעודה מגיעה לתיבת הדואר: ספק צריך את תעודת הלקוח שלכם, מאזן עומסים חדש צריך את תעודת ה-wildcard, עמית צריך את תעודת החתימה כדי לבנות גרסה. הקובץ שהם מבקשים יכול להיות לא מזיק, והוא יכול להיות המפתח הפרטי שמאפשר לכל אחד להתחזות לשירות שלכם. לעיתים קרובות שניהם עוברים באותה חבילה.
כדי לשתף תעודה פרטית דרך קישור מאובטח בצורה בטוחה, בררו קודם איזה חצי באמת נדרש. ארזו את המפתח הפרטי כך שבלי סיסמה אין בו שום תועלת, שלחו את הקובץ בקישור חד-פעמי שמושמד אחרי הורדה אחת, ושלחו את הסיסמה במקום אחר. המדריך עובר על כל שלב, עם הפקודות.
התעודה ציבורית. המפתח לא.
תעודה מכילה מפתח ציבורי, את הישות שלה הונפקה (ה-subject), את המנפיק ואת תאריכי התוקף. היא נועדה להפצה: כל דפדפן שמתחבר לאתר שלכם מקבל אותה. המפתח הפרטי הוא הסוד הנפרד שמוכיח שהתעודה שייכת לכם. מי שמחזיק בו יכול לפענח תעבורה שמיועדת לכם, לחתום על דברים בשמכם או להקים שרת שמתחזה אליכם.
לכן השאלה הראשונה היא אם הנמען בכלל צריך את המפתח.
| הנמען רוצה | מה הוא צריך | רגיש? |
|---|---|---|
| לסמוך על השירות שלכם או לאמת חתימה | התעודה (ואולי גם שרשרת ה-CA) | לא |
| להתקין TLS בשרת או במכשיר שהוא מפעיל | תעודה, שרשרת ומפתח פרטי | כן |
| לחתום על קוד או על מסמכים בשם הארגון שלכם | תעודה ומפתח פרטי | כן, מאוד |
| להזדהות מול מערכת עם תעודת לקוח | תעודה ומפתח פרטי | כן |
אם התשובה היא השורה הראשונה, שלחו את הקובץ .crt או .cer בכל דרך שנוחה לכם, ואפשר להפסיק לקרוא כאן. כל מה שבהמשך מיועד לשורות שבהן המפתח צריך לעבור.
בדקו מה יש בקובץ לפני שאתם שולחים אותו
סיומות קבצים מטעות. קובץ .pem יכול להכיל תעודה, מפתח או את שניהם. קובץ .pfx או .p12 בדרך כלל אורז תעודה, שרשרת ומפתח מאחורי סיסמה. בדקו לפני השליחה:
# what is in this PEM?
openssl x509 -in cert.pem -noout -subject -issuer -dates
grep -c "PRIVATE KEY" cert.pem # 0 means no key inside
# what is in this PFX? (prompts for the password)
openssl pkcs12 -in bundle.pfx -info -noout
ודאו שה-subject תואם למה שהנמען ביקש ושתאריך התפוגה עוד לא עבר. שליחת תעודה שגויה היא טעות נפוצה; שליחת תעודה שגויה יחד עם המפתח שלה היא כבר אירוע אבטחה.
ארזו את המפתח כך שלבדו אין בו תועלת
אם המפתח חייב לעבור, אף פעם אל תשלחו אותו חשוף. העבירו אותו לפורמט שמוצפן בסיסמה, ואת הסיסמה שלחו בנפרד.
# bundle certificate, chain and key into a password-protected PFX
openssl pkcs12 -export -out service.pfx \
-inkey service.key -in service.crt -certfile chain.crt
# or encrypt a PEM key on its own
openssl pkey -in service.key -aes-256-cbc -out service.enc.key
השתמשו בסיסמה ארוכה שנוצרה במנהל סיסמאות. הסיסמה היא הגורם השני: מי שמשיג את הקובץ עדיין לא יכול להשתמש בו, ולמי שמשיג את הסיסמה אין על מה להפעיל אותה.
שלחו את הקובץ בקישור מאובטח חד-פעמי
הקישור הוא שלב המסירה, והמטרה היא שאחריו לא יישאר עותק של הקובץ באף הודעה.
- אמתו את הנמען מול מקור שאתם כבר סומכים עליו: הכרטיס, איש הקשר הרשום אצל הספק, שיחת טלפון. בקשה לתעודה מכתובת לא צפויה מצדיקה שיחת טלפון, לא תשובה להודעה.
- צרו קישור סודי עם הקובץ מצורף. בחשבון LinkPilot מחובר, פתחו את "Secret Links", בחרו "New" וצרפו את קובץ ה-PFX או ה-PEM המוצפן. כל קובץ מוגבל ל-9 MB, גודל שהוא פי אלפים מכל חבילת מפתח. הקובץ המצורף מוצפן בדפדפן שלכם לפני ההעלאה ונמחק בפעם הראשונה שמורידים אותו.
- הגדירו את התפוגה לפי החלון האמיתי. שעה אם הנמען מחכה, 24 שעות כשיש הפרשי שעות. ההורדה היחידה היא הבקרה העיקרית; התפוגה היא רשת ביטחון לקישור שאף אחד לא פותח.
- הגדירו את מגבלת הצפיות לאחת. אם שני מהנדסים צריכים את החבילה, כל אחד מקבל קישור משלו.
- הוסיפו ביטוי סיסמה לקישור בחשבון Pro אם הוא יעבור בערוץ שגם אנשים אחרים רואים.
- שלחו את הקישור עם שורת הסבר אחת: איזו תעודה, לאיזו מערכת, ומתי תוקף הקישור פג.
- שלחו את הסיסמה של הקובץ בערוץ אחר. הודעת SMS, שיחת טלפון או קישור סודי שני שנשלח בדרך אחרת. אף פעם לא באותה הודעה עם הקישור לקובץ, ואף פעם לא בשם הקובץ.
אם המפתח הוא טקסט PEM קצר, אפשר להדביק אותו ישירות בכלי החינמי ליצירת קישור סודי במקום לצרף קובץ. הטקסט מוצפן בדפדפן שלכם ומושמד בפתיחה הראשונה, בדיוק כמו קובץ.
הסבירו לנמען מה לעשות עם הקובץ
שלחו את הוראות ההתקנה עם הודעת ההסבר, לא עם הסיסמה:
- איזה קובץ יגיע, באיזה פורמט ולאיזו מערכת הוא שייך.
- איפה לשמור אותו: בתיקיית התעודות של השרת, עם הרשאות שמוגבלות לחשבון השירות, או במאגר התעודות של מערכת ההפעלה. לא בתיקיית ההורדות ולא בכונן משותף.
- מחקו את העותק שהורד אחרי הייבוא, ואף פעם אל תוסיפו אותו למאגר קוד.
- אשרו את הקבלה לפי שם הקובץ וטביעת האצבע שלו, ולעולם לא על ידי שליחת הקובץ בחזרה:
openssl x509 -in service.crt -noout -fingerprint -sha256
אחרי המסירה
בדקו שהסטטוס של הקישור הוא "revealed" (הוצג) ושהנמען מאשר שטביעת האצבע תואמת. בחשבונות Pro אפשר לראות ביומן הביקורת את הזמן המדויק של ההורדה. אם הקישור נפתח לפני שהנמען הגיע אליו, או שהקובץ נשלח לכתובת שגויה, אל תחכו להוכחה לשימוש לרעה: בטלו את התעודה מול ה-CA שהנפיק אותה, צרו זוג מפתחות חדש, הנפיקו תעודה מחדש והחליפו אותה בכל מקום שבו היא מותקנת.
תעדו מי קיבל איזו תעודה ומתי, ושמרו את הרישום. הקובץ צריך להימצא במערכות שזקוקות לו, ובשום מקום בדרך אליהן.
