שלילת אישורים

עדכון אחרון: | הצגת כל התיעוד

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

בעת שלילת אישור של Let’s Encrypt, פרטים על השלילה הזאת יפורסמו על ידיLet’s Encrypt דרך Online Certificate Status Protocol(פרוטוקול מצב אישור מקוון - OCSP), וחלק מהדפדפנים יבדקו את OCSP כדי לבדוק האם עליהם לתת אמון באישור. נא לשים לב של־OCSP יש כמה תקלות יסודיות, לכן לא כל הדפדפנים יבצעו את הבדיקה הזו. עם זאת, שלילת אישורים בתגובה למפתחות פרטיים שנפגעו היא דרך התנהלות חשובה והיא נדרשת על ידי הסכם המנוי של Let’s Encrypt.

כדי לשלול אישור עם Let’s Encrypt, יהיה עליך להשתמש ב־API של ACME, ככל הנראה דרך לקוח ACME כגון Certbot. יהיה עליך להוכיח ל־Let’s Encrypt שיש לך הרשאה לשלול את האישור. יש שלוש דרכים לעשות זאת: מהחשבון שהנפיק את האישור באמצעות חשבון מאומת אחר או באמצעות המפתח הפרטי של האישור.

ציון קוד סיבה

בעת שלילת רישיון, מנויי Let’s Encrypt אמורים לבחור בקוד סיבה כדלהלן:

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

מהחשבון שהנפיק את האישור

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

certbot revoke --cert-path /etc/letsencrypt/archive/${YOUR_DOMAIN}/cert1.pem

באמצעות חשבון מורשה אחר

אם מישהו הנפיק אישור לאחר פגיעה במארח או ב־DNS ייתכן שעדיף יהיה לך לשלול את האישור הזה לאחר השבת השליטה לידיך. כדי לשלול את האישור, על מערכת Let’s Encrypt יהיה לוודא שיש לך שליטה על שמות המתחם שבאישור הזה (אחרת אנשים יוכלו לשלול אישורים זה לזה ללא הרשאה)!

כדי לתקף את השליטה הזאת, משתמשת מערכת Let’s Encrypt באותן השיטות בהן היא משתמשת כדי לתקף שליטה לצורך הנפקה: ניתן להציב ערך ברשומת TXT ב־DNS או להציב קובץ על שרת HTTP. בדרך כלל, לקוח ACME אמור לטפל בזה עבורך. נא לשים לב שרוב לקוחות ה־ACME משלבים תיקוף והנפקה, לכן הדרך היחידה לבקש תיקופים היא לנסות לבקש הנפקה. לאחר מכן יתאפשר לך לשלול את האישור שהונפק אם אין לך צורך בו, או פשוט להשמיד את המפתח הפרטי.

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

certbot certonly --manual --preferred-challenges=dns -d ${YOUR_DOMAIN} -d nonexistent.${YOUR_DOMAIN}

ולעקוב אחר ההוראות. אם עדיף לך לתקף באמצעות HTTP במקום באמצעות DNS, יש להחליף את הדגלון ‎--preferred-challenges ב־‎--preferred-challenges=http.

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

certbot revoke --cert-path /PATH/TO/downloaded-cert.pem

באמצעות המפתח הפרטי של האישור

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

כדי להשתמש בשיטה הזאת, יהיה עליך להעתיק את המפתח הפרטי בתצורת PEM תחילה.

ואז, אם עוד אין לך אותו, יש להוריד את האישור שמיועד לשלילה. מערכת Let’s Encrypt מתעדת את כל האישורים אל יומני שקיפות אישורים, כדי לאפשר לך למצוא ולהוריד אישורים מעוקבי אישורים כגון crt.sh. חיפוש שדה SubjectPublicKeyInfo (SPKI) תואם יאתר את כל האישורים שמשתמשים במפתח הפרטי. כדי לחלץ את גיבוב ה־SPKI ממפתח פרטי:

openssl pkey -outform DER -in /PATH/TO/privkey.pem -pubout | openssl sha256

לאחר שהמפתח הפרטי והאישור בידיך, אפשר לשלול את האישור כך:

certbot revoke --cert-path /PATH/TO/cert.pem --key-path /PATH/TO/privkey.pem --reason keyCompromise