מבוא ל-Let's Encrypt

הקדמה

Let’s Encrypt הוא רשות תעודות פתוחה ואוטומטית שמשתמשת בפרוטוקול ACME (סביבת ניהול תעודות אוטומטית) כדי לספק תעודות TLS/SSL בחינם לכל לקוח תואם. תעודות אלו יכולות לשמש להצפנת תקשורת בין שרת האינטרנט שלך והמשתמשים שלך. קיימים עשרות לקוחות זמינים, כתובים בשפות תכנות שונות, והמון אינטגרציות עם כלים מנהליים פופולריים, שירותים, ושרתים.

הלקוח ACME הפופולרי ביותר, Certbot, כיום מפותח על ידי האגודה לפרונט אלקטרוני. בנוסף לאימות בעלות הדומיין ולקבלת תעודות, Certbot יכול להגדיר באופן אוטומטי TLS/SSL על שרתי האינטרנט של אפאצ'י ו-אנג'ינקס.

המדריך הזה ידון בקצרה ברשויות תעודות ואיך Let’s Encrypt פועלת, ואז יבקר במספר לקוחות ACME פופולריים.

מהו רשות תעודות?

רשויות התעודות (CAs) הן יישויות שחותמות קריפטוגרפית על תעודות TLS/SSL כדי להעיד על אמינותן. דפדפנים ומערכות הפעלה מכילים רשימה של CAs מהימים שהם משתמשים בהם כדי לאמת את תעודות האתרים.

עד לאחרונה, רוב ה-CAs היו פעולות מסחריות שגבות כסף על שירותי האימות והחתימה שלהן. Let’s Encrypt הפך את התהליך הזה לחינמי עבור המשתמשים על ידי אוטומציה מוחלטת של התהליך, ועל ידי הסתמכות על ספונסורות ותרומות למימון התשתיות הנדרשות.

למידע נוסף על תעודות ועל סוגי הרשויות השונות, ניתן לקרוא "השוואה בין Let’s Encrypt, רשויות מסחריות ופרטיות, ותעודות SSL שנחתמו עצמאית".

בהמשך, נסתכל על איך Let’s Encrypt מבצעת אימות דומיין אוטומטי.

איך עובד Let’s Encrypt

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

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

לדוגמה, באתגר המבוסס על HTTP, הלקוח יחשב מפתח מהטוקן הייחודי ומפתח חשבון, ואז ישים את התוצאה בקובץ לשירות על ידי השרת האינטרנט. שרתי Let’s Encrypt יאחזרו אז את הקובץ בכתובת http://example.com/.well-known/acme-challenge/token. אם המפתח נכון, הלקוח הוכיח שיש לו שליטה במשאבים על example.com, והשרת יחתום ויחזיר תעודה.

פרוטוקול ACME מגדיר אתגרים מרובים שהלקוח שלך יכול להשתמש בהם כדי להוכיח את בעלות הדומיין. האתגר של HTTPS דומה ל-HTTP, רק שבמקום קובץ טקסט, הלקוח יפעיל תעודת עצמאות עם המפתח כלול. האתגר של DNS מחפש את המפתח ברשומת TXT של DNS.

לקוח Certbot של Let’s Encrypt

קרטבוט הוא לכל הדעות הלקוח הפופולרי ביותר של Let’s Encrypt. הוא כלול ברוב ההפצות המרכזיות של Linux, וכולל יכולויות תצורה אוטומטיות נוחות ל-Apache ו-Nginx. לאחר התקנה, גישה לתעודה ועדכון התצורה של Apache שלך ניתן לבצע כך:

  1. sudo certbot --apache -d www.example.com

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

בשל כך שתעודות של Let’s Encrypt תקפות למשך תשעים יום בלבד, חשוב להגדיר תהליך שיחדש אוטומטית. הפקודה הבאה תחדש את כל התעודות על מחשב:

  1. sudo certbot renew

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

אם ברצונך ללמוד עוד על cron ועל קרונטבים, נא להתייחס למדריך "איך להשתמש ב-Cron לאוטומציה של משימות".

לקוחות אחרים

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

  • יש לקוח כתוב ברוב שפות התכנות, כולל סקריפטים של שרת (Shell), Go, ו-Node.js. זה יכול להיות חשוב אם אתה יוצר תעודות בסביבה מוגבלת ומעדיף שלא לכלול פייתון ותלויות אחרות של Certbot
  • חלק מהלקוחות יכולים לרוץ בלעדי root הרשאות. זה רעיון טוב לרוץ בכמה שפחות קוד עם הרשאות פרטיות ככל הניתן
  • רבים מהלקוחות יכולים לאוטומטזיה את האתגר המבוסס על DNS על ידי שימוש ב-API של ספק ה-DNS שלך כדי ליצור באופן אוטומטי את הרשומת TXT המתאימה. האתגר של DNS מאפשר תרומה למקרים מעט יותר מורכבים כגון הצפנת שרתי האינטרנט שאינם נגישים לציבור
  • חלק מהלקוחות משולבים במכונות שרת רשת, פרוקסיים הפוך או מאזיני עומס, ולכן קל יותר להגדיר ולהטמיע

חלק מהלקוחות הפופולריים יותר הם:

  • lego: כתוב ב-Go, lego הוא התקנה של בינארי קובץ אחד ותומך ברבים ספקי DNS כאשר משתמשים באתגר של DNS
  • acme.sh: acme.sh הוא סקריפט פשוט של שרת שיכול לרוץ במצב לא מורשה, וגם לתקשר עם 30+ ספקי DNS
  • Caddy: Caddy הוא שרת אינטרנט מלא שכתבו ב-Go עם תמיכה מובנית ב- Let’s Encrypt.

רבים מהלקוחות הם זמינים, ורבים מהשרתים והשירותים הופכים את ההגדרה של TLS/SSL לאוטומטית על ידי שילוב תמיכה ב- Let’s Encrypt.

סיכום

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

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-let-s-encrypt