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

זהו את התעודה, לא את האדם

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

openssl x509 -in client.crt -noout -serial -issuer -subject -dates
openssl crl -in ca.crl -noout -text | head -40

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

בדיקת התנהגות מהירה מאשרת את המצב בלי לשנות דבר:

openssl verify -crl_check -CAfile ca.crt -CRLfile ca.crl client.crt

אם היא מדווחת שהתעודה מבוטלת, ה-CRL והלקוח מסכימים; אם היא מאמתת נקי, הלקוח שבידיכם אינו המבוטל, והחיפוש נמשך.

בדקו אם ה-CA השתמש בהחזקה או בביטול קבוע

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

המלכודת היא להניח שכוונה זמנית פירושה רשומה זמנית. אם הרשומה ב-CA נושאת keyCompromise או cessationOfOperation, התעודה מבוטלת לצמיתות, יהיה אשר יהיה מה שהתכוון האדם שלחץ על הכפתור. לעומת זאת, רשומה המסומנת certificateHold ב-CA שאינו מיישם שחרור החזקה היא קבועה בפועל, כי שום דבר לעולם לא יפרסם את השחרור.

מרכזי CA מבוססי OpenSSL ממחישים את המגבלה. הפקודה ca מקבלת ערכי -crl_reason, כולל certificateHold ו-removeFromCRL, אך אינה מייצרת CRL דלתא — תיעוד OpenSSL CA מציין את המגבלה הזו לפלט ה-CRL שלו. CRL מלא שפשוט משמיט את המספר הסידורי הוא מודל פרסום שונה מדלתא שאומרת "רשומה זו שוחררה", ולכן הדבקת removeFromCRL ב-CA VPN מבוסס OpenSSL אינה מפיקה את השחרור המוגדר בתקנים.

אם ייתכן שהמפתח נחשף, החליפו אותו

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

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

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

אם הייתה זו טעות מנהלית, החליפו תחת שליטה

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

ב-CA של OpenSSL מסד הנתונים מופרד בטאבים וקל לקרוא אותו לא נכון, וזה מה שעושה עריכה ידנית למושכת:

awk -F'\t' '$1=="R" {print $4, $3, $6}' index.txt

קראו אותו, אל תכתבו אותו. עריכת הקובץ משנה את ה-CRL הבא בלי שום עקבות ביקורת, וכל עותק CA שני או גיבוי שעדיין מחזיק בשורה המקורית יחלוק עליו מאוחר יותר.

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

אשרו קבלה טרייה ושמרו את הרשומה

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

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

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

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