Let's Encrypt

**Let's Encrypt** היא רשות להנפקת תעודות ללא כוונת רווח המנוהלת על ידי Internet Security Research Group (ISRG) המספקת אישורי X.509 עבור קידוד TLS (Transport Layer Security) ללא עלות. האישור תקף למשך 90 יום וניתן לחדש אותו במהלכם בכל עת בתהליך אוטומטי. הרשות הושקה ב־12 באפריל 2016, ונכון לתחילת 2024 הארגון מספק אישורים לכמעט 400 מיליון אתרים.

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

בשרתי לינוקס די בהרצת שתי פקודות כדי להגדיר הצפנת HTTPS להשיג ולהתקין אישורים. לשם כך נוספה חבילה ייעודית למאגרי התוכנה הרשמיים של דביאן ושל אובונטו. יוזמות נוכחיות של מפתחי דפדפן מרכזיים כגון מוזילה ו־גוגל להוצאת HTTP בלתי מוצפן מכדי שימוש מסתמכות על הזמינות של Let's Encrypt.

השירות מנפיק אך ורק אישורי אימות שם תחום, מכיוון שניתן להנפיק אותם באוטומציה מלאה. אימות ארגון ואישורי אימות מורחבים שניהם דורשים אימות אנושי עבור כל אחד מהם, ולכן אינם מוצעים על ידיLet's Encrypt. בזכות שקיפות מרבית ככל הניתן, בארגון מקווים לשמור על האמינות וגם להגן מפני התקפות וניסיונות תמרון. לשם כך מפרסם הארגון באופן קבוע דוחות שקיפות, מתעד פומבית את כל פעולות ה־ACME (למשל באמצעות שקיפות אישורים) ומשתמשים בתקנים פתוחים ובתכנה חופשית ככל הניתן. התמיכה ב־ACME v2 ובאישורים כוללניים נוספה במרץ 2018. 

## גופים מעורבים
Let's Encrypt הוא שירות שמסופק על ידי קבוצת מחקר אבטחת האינטרנט (ISRG), שהוא ארגון לתועלת הציבור. נותני החסות העיקריים הם קרן החזית האלקטרונית (EFF), קרן מוזילה, OVH, סיסקו מערכות, גוגל, AWS ואיגוד האינטרנט העולמי. שותפים נוספים כוללים את רשות האישורים IdenTrust, את אוניברסיטת מישיגן (UM), את בית הספר למשפטים של אוניברסיטת סטנפורד, את קרן לינוקס, את סטיבן קנט מ־Raytheon / BBN טכנולוגיות ואת אלכס פולבי מ־CoreOS.

## טכנולוגיה
ביוני 2015, הכריזה Let's Encrypt על יצירת אישור ה־RSA העליון הראשון שלה ISRG Root X1. האישור שימש כדי לחתום על שני אישורי תווך, שנחתמו באופן צולב גם על ידי רשות האישורים IdenTrust. אחת מתעודות התווך משמשת לחתימה על אישורים שהונפקו, ואילו השנייה נשמרת במצב לא מקוון כגיבוי במקרה של תקלות עם אישור התווך ראשון. מכיוון שאישור IdenTrust מותקן מראש בדפדפני האינטרנט הגדולים, האישורים של Let's Encrypt מאומתים ומתקבלים עם ההתקנה עוד לפני שספקי הדפדפנים כוללים את האישור העליון של ISRG כעוגן אמון.

מפתחי Let's Encrypt תכננו להנפיק אישור ECDSA עליון גם כן במהלך 2015, שנדחה לתחילת 2016 ואז שוב לשנת 2020.

### פרוטוקול ACME
פרוטוקול האתגר-מענה שמשמש לאוטומציה של ההרשמה לרשות האישורים נקרא ACME (Automated Management Management Certificate). הפרוטוקול עוסק בבקשות שונות לשרת האינטרנט עבור שם התחום המכוסה על ידי האישור. אם התגובות שהתקבלו תואמות את הציפיות, לנרשם מובטחת שליטה על שם התחום (אימות שם תחום). כדי לעשות זאת, תוכנית הלקוח ACME מגדירה שרת TLS מיוחד במערכת השרת שמתושאל על ידי שרת רשות האישורים של ACME עם בקשות מיוחדות המשתמשות בחיווי שם שרת (אימות שם תחום באמצעות חיווי שם שרת, DVSNI).

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

התקשורת מול ACME מבוססת על החלפת מסמכי JSON על גבי חיבורי HTTPS. מפרט טיוטה זמין ב־GitHub והוגשה גרסה Internet Engineering Task Force (IETF) כהצעה לתקן אינטרנטי.

ב־Let's Encrypt מומשה טיוטה עצמאית לפרוטוקול ACME. במקביל, הייתה גם חתירה לתקינה. מה שהוביל ל„תקן המוצע” (RFC8555) במאי 2019. הצעה זו הציגה שינויים שסותרים גרסאות קודמות ולכן זכה לכינוי ACMEv2. Let's Encrypt מימשה את הגרסה החדשה והחלה לעודד לקוחות קיימים לשדרוגים. העידוד בוצע תוך הפסקות פעילות שירות לסירוגין של ממשק ה־API של ACMEv1. סיום חיי התקן הישן הוכרז יחד עם תאריכים ושלבים בסעיף „תוכנית סוף החיים עבור ACMEv1”. 

#### סיום חיי ACMEv1
##### רישומי חשבון חדשים
סביבת הכנה להקמה:
* 2019 - 6 באוגוסט עד 7 באוגוסט - השבתה חלקית ראשונה
* 2019 - 13 באוגוסט עד 15 באוגוסט - השבתה חלקית שנייה
* 2019 - 27 באוגוסט עד 3 בספטמבר - השבתה חלקית שלישית
* 2019 - 1 באוקטובר - רישום חשבונות ACME v1 חדשים הושבת לצמיתות

סביבת פעילות שוטפת:
* 2019 - 10 באוקטובר עד 11 באוקטובר - השבתה חלקית ראשונה
* 2019 - 16 באוקטובר עד 18 באוקטובר - השבתה חלקית שנייה
* 2019 - 8 בנובמבר - רישום חשבונות ACME v1 חדשים הושבת לצמיתות

##### אימות שמות תחום חדשים
יוני 2020 - אימות שמות תחום חדשים יושבת

##### אימותי חידוש אישורים
השבתות חלקיות ל־24 שעות תחלנה בינואר 2021

יוני 2021 - ACMEv1 יושבת לחלוטין

### מימוש תוכנתי
ממוזער| דו-שיח לבחירת שם תחום
רשות האישורים נשענת על תוכנית בשם Boulder, שנכתבה ב־Go, שמיישמת את צד השרת של פרוטוקול ACME. התוכנית מופצת כתוכנה חופשית יחד עם קוד המקור תחת תנאי גרסה 2 של הרישיון הציבורי של מוזילה (MPL). היא מספקת API מסוג RESTful שניתן לגשת אליו דרך ערוץ TLS מוצפן. Boulder משתמש ב־cfssl, ערכת כלים של CloudFlare PKI/TLS, באופן פנימי. 

תוכנית שכתובה בפייתון ברישיון אפאצ'י לניהול אישורים בשם *[https://certbot.org certbot]* (לשעבר *letsencrypt*) מותקנת בצד הלקוח (שרת האינטרנט של מי שנרשם לשירות). התוכנית משמשת להזמנת האישור, ניהול תהליך אימות שם התחום, התקנת האישור, הגדרת תצורת ה־HTTPS בשרת HTTP ובהמשך חידוש הקובץ של האישור באופן קבוע. לאחר ההתקנה וההסכמה לרישיון המשתמש די בביצוע פקודה בודדת כדי להתקין אישור תקף. ניתן להפעיל אפשרויות נוספות כמו שידוך OCSP או HTTP Strict Transport Transport (HSTS). ההתקנה אוטומטית עובדת בשלב זה רק עם אפאצ׳י ועם Nginx.

מערכת Let's Encrypt מנפיקה אישורים שתקפים ל־90 יום. הסיבה לכך היא שאישורים אלו „מגבילים נזק כתוצאה מפגיעה במפתח והנפקה שגויה” ומעודדים אוטומציה. 

בהתחלה, Let's Encrypt פיתחה לקוח ACME משלה - *Certbot* - כמימוש רשמי. הלקוח הועבר לקרן החזית האלקטרונית ושמו הקודם „letsencrypt” הוחלף ב־„certbot”. יש מבחר גדול של לקוחות ומיזמים סביב ACME שפותחו על ידי הקהילה למגוון סביבות. 
ממוזער| דוגמה לאתר עם אישור של Let's Encrypt

## היסטוריה
מיזם Let's Encrypt נוסד בשנת 2012 על ידי שני עובדי מוזילה, ג׳וש אאס ואריק רסקורלה, יחד עם פיטר אקרסלי מקרן החזית האלקטרונית וג׳. אלכס הלדרמן מאוניברסיטת מישיגן. קבוצת מחקר אבטחת האינטרנט, החברה שמאחורי Let's Encrypt, נוסדה במאי 2013.

ההכרזה לציבור יצאה ב־18 בנובמבר 2014.

ב־28 בינואר 2015 הוגש פרוטוקול ACME ל־IETF באופן רשמי לצורך תקינה. ב־9 באפריל 2015 הכריזו ISRG וקרן לינוקס על שיתוף פעולה. האישורים העליונים ואישורי התווך נוצרו בתחילת יוני. ב־16 ביוני 2015, הוכרז לוח הזמנים הסופי להשקת השירות, כאשר הנפקת האישור הראשון צפויה הייתה מתישהו בשבוע סביב 27 ביולי 2015 ולאחריו תקופת הנפקה מוגבלת לבדיקת האבטחה ויכולת הגדילה. הזמינות הכללית של השירות תוכננה במקור להתחיל מתישהו בשבוע של 14 בספטמבר 2015. ב־7 באוגוסט 2015, תוקן לוח הזמנים של ההשקה כדי לספק זמן רב יותר להבטיח אבטחה ויציבות מערכתית, כאשר האישור הראשון שהונפק בשבוע סביב 7 בספטמבר 2015 ולאחריו זמינות כללית בשבוע שסביב 16 בנובמבר 2015. החתימה הצולבת של IdenTrust תוכננה להיות זמינה עם פתיחת Let's Encrypt לקהל הרחב.

ב־14 בספטמבר 2015, Let's Encrypt הנפיקה את האישור הראשון שלה, שהיה מיועד לשם התחום . באותו יום הגישה ISRG את יישומי תוכנית האישור העליון שלה למוזילה, מיקרוסופט, גוגל ואפל.

ב־19 באוקטובר 2015, אישורי התווך נחתמו באופן צולב על ידי IdenTrust, מה שגרם לכך שכל האישורים שהונפקו על ידי Let's Encrypt ייחשבו מהימנים על ידי כל הדפדפנים הגדולים.

ב־12 בנובמבר 2015, Let's Encrypt הודיעה כי הזמינות הכללית תידחה וכי הבטא הציבורית הראשונה תתחיל ב־3 בדצמבר 2015. הבטא הציבורית התקיימה החל מ־3 בדצמבר 2015  ועד 12 באפריל 2016.

ב־3 במרץ 2020, Let's Encrypt הודיעה כי תצטרך לבטל למעלה מ־3 מיליון אישורים ב־4 במרץ, עקב פגם בתוכנית רשות האישורים שלה.  באמצעות עבודה עם ספקי תוכנה ויצירת קשר עם מפעילי אתרים, Let's Encrypt הצליחה לחדש 1.7 מיליון מהתעודות המושפעות לפני המועד האחרון. בסופו של דבר הוחלט לא לבטל את שאר האישורים הנגועים, מכיוון שהסיכון לאבטחת המידע היה נמוך ותוקף האישורים אמור היה לפוג במהלך 90 הימים שלאחר מכן בכל מקרה.

במרץ 2020 הוענק ל־Let's Encrypt הפרס השנתי של קרן התוכנה החופשית למיזמים בעלי תועלת חברתית. 

### אישורים שהונפקו



## לקריאה נוספת
* Barnes, R.; Hoffman-Andrews, J.; McCarney, D.; Kasten, J. (מרץ 2019). סביבת ניהול אישורים אוטומטית (ACME) . IETF.

## קישורים חיצוניים

* 
* https://certbot.eff.org
* Let's Encrypt ב־GitHub
* ההרצאה של סת׳ שון ב־Libre Planet בשנת 2015 על Let's Encrypt
* השיחה של pde על Let's Encrypt מ־CCCamp של 2015
* רשימת האישורים שהונפקו על ידי Let's Encrypt

## הערות שוליים

קטגוריה:אבטחת מידע
קטגוריה:מוזילה
קטגוריה:אתרי אינטרנט שהושקו ב-2014