הקדמה
Let’s Encrypt הוא רשות אישורים (CA) שמספקת דרך קלה לקבל ולהתקין תעודות TLS/SSL בחינם, וכך לאפשר HTTPS מוצפן על שרתי האינטרנט. הוא פשוט את התהליך על ידי ספקת לקוח תוכנה, Certbot, המנסה לאוטומט רוב (אם לא את כל) השלבים הנדרשים. כרגע, כל התהליך של קבלת והתקנת תעודה הוא מאובטמן לחלוטין על שני Apache ו-Nginx.
במדריך זה, תשתמש ב-Certbot כדי לקבל תעודת SSL בחינם עבור Nginx ב-Ubuntu 20.04 ותגדיר את התעודה שלך כך שתתחדש באופן אוטומטי.
מדריך זה ישתמש בקובץ הגדרות שרת Nginx נפרד במקום הקובץ ברירת המחדל. אנו ממליצים על יצירת קבצי בלוק שרת Nginx חדשים עבור כל דומיין מפני שזה עוזר למנוע טעויות נפוצות ולשמור על הקבצים המוגדרים כברירת מחדל כתצורת גיבוי.
תן ל-DigitalOcean לדאוג לניהול Nginx ול-Let’s Encrypt. פלטפורמת היישומים של DigitalOcean תאפשר לך להתקין ישירות מ-GitHub בדקות. הפלטפורמה תתעסק גם בתעודות SSL ובניתוב עבורך.
דרישות
כדי לעקוב אחרי המדריך הזה, יש לך צורך ב:
-
שרת Ubuntu 20.04 אחד הוקם על ידי הפעלת המדריך התקנת השרת הראשונית עבור Ubuntu 20.04, כולל משתמש עם הרשאות sudo וגישה ללא משתמש ראשי, וגם חומת אש.
-
שם דומיין מורשה. המדריך ישתמש ב־
example.com
לכל אורך. ניתן לרכוש שם דומיין מ־Namecheap, לקבל אחד בחינם מ־Freenom, או להשתמש ברשם הדומיינים שלך לבחירתך. -
שני רשומות DNS הבאות צריכות להיות מוגדרות עבור השרת שלך. אם אתה משתמש ב־DigitalOcean, ראה את תיעוד ה-DNS שלנו לפרטים נוספים על כיצד להוסיף אותם.
- רשומת A עם
example.com
שמצביעה לכתובת ה-IP הציבורית של השרת שלך. - רשומת A עם
www.example.com
שמצביעה לכתובת ה-IP הציבורית של השרת שלך. -
ה-Nginx מותקן על ידי מעקב אחרי איך להתקין Nginx על Ubuntu 20.04. הוודא שיש לך בלוק שרת עבור הדומיין שלך. המדריך הזה ישתמש ב־
/etc/nginx/sites-available/example.com
כדוגמה.
שלב 1 — התקנת Certbot
השלב הראשון לשימוש ב-Let’s Encrypt לקבלת תעודת SSL הוא להתקין את תוכנת Certbot על השרת שלך.
התקן את Certbot ואת תוסף ה-Nginx שלו באמצעות apt
:
כעת Certbot מוכן לשימוש, אך כדי שיוכל להגדיר את SSL באופן אוטומטי עבור Nginx, עלינו לוודא חלק מהתצורה של Nginx.
שלב 2 — אימות תצורת Nginx
יש ל-Certbot להיות מסוגל למצוא את הבלוק server
הנכון בתצורת ה-Nginx שלך כדי שיוכל להגדיר את SSL באופן אוטומטי. בדיוק כך הוא עושה זאת על ידי חיפוש אחר הוראת server_name
שמתאימה לדומיין שבו אתה מבקש תעודה.
אם עקבת אחרי שלב הגדרת בלוק השרת במדריך להתקנת Nginx, עליך להניח שיש לך בלוק שרת עבור הדומיין שלך ב- /etc/nginx/sites-available/example.com
עם ההוראה server_name
הוגדרת כבר באופן מתאים.
כדי לבדוק, פתח את קובץ התצורה עבור הדומיין שלך באמצעות nano
או העורך הטקסט המועדף עליך:
מצא את השורה הקיימת server_name
. זה צריך להיראות כמו כך:
אם כן, צא מהעורך והמשך לשלב הבא.
אם זה לא, עדכן אותו כך שיתאים. לאחר מכן שמור את הקובץ, צא מהעורך שלך, ווודא את תחביר העריכות בתצורה שלך:
אם תקבל שגיאה, פתח מחדש את קובץ בלוק השרת ובדוק אם יש טעויות כתיב או תווים חסרים. לאחר שתחביר הקובץ הוא נכון, הטען מחדש את Nginx כדי לטעון את התצורה החדשה:
אפשר ל-Certbot למצוא את בלוק השרת הנכון ולעדכן אותו באופן אוטומטי:
לבסוף, נעדכן את הגישה השרתית כדי לאפשר תעבורת HTTPS:
שלב 3 — מאפשרים HTTPS דרך הגישה האש
אם יש לך את חומת האש ufw מאופשרת, כפי שמומלץ במדריכי הדרישות המקדימות, יהיה עליך להתאים את ההגדרות כדי לאפשר תעבורת HTTPS. במזל, Nginx רשום מספר פרופילים עם ufw בעת התקנה:
ניתן לראות את ההגדרה הנוכחית על ידי כתיבת:
זה ייראה כך כנראה, הקנייה שאך HTTP תעבורת מותרת לשרת האינטרנט:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
כדי לאפשר גם תעבורת HTTPS, נאפשר לפרופיל המלא של Nginx ונמחק את ההרשאה המיותרת לפרופיל HTTP של Nginx:
הסטטוס שלך צריך להיראות כך כעת:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
לבסוף, בוא נפעיל את Certbot ונביא את התעודות שלנו.
שלב 4 — קבלת תעודת SSL
צוות Certbot מספק מגוון דרכים לקבלת תעודות SSL דרך תוספים. תוסף ה-Nginx יטפל בשינוי התצורה של ה-Nginx ובטעינה מחדש של התצורה כל פעם שנדרש. כדי להשתמש בתוסף זה, הקלד את הפקודה הבאה:
זה מפעיל את certbot
עם התוסף --nginx
, באמצעות -d
לציין את שמות הדומיין שברצוננו שהתעודה תהיה תקפה עבורם.
אם זה הפעם הראשונה שלך בהפעלה של certbot
, יתבקש ממך להזין כתובת דוא"ל ולהסכים לתנאי השירות. לאחר עשיית זאת, certbot
יתקשר עם שרת ה-Let’s Encrypt, ולאחר מכן יריץ את אתגר האימות כדי לוודא שאתה שולט בדומיין שבשבילו אתה מבקש תעודה.
אם הכל מתבצע בהצלחה, certbot
ישאל איך תרצה להגדיר את ההגדרות שלך עבור HTTPS.
OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
בחר את בחירתך ואז לחץ על ENTER
. ההגדרה תתעדכן, וה-Nginx יטען מחדש כדי לאסוף את ההגדרות החדשות. certbot
יסיים עם הודעה שאומרת שהתהליך הושלם בהצלחה והתעודות שלך נשמרות:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2020-08-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
התעודות שלך ירדו, הותקנו ונטענו. נסה לטעון מחדש את האתר שלך באמצעות https://
ושים לב לאינדיקטור האבטחה של הדפדפן שלך. הוא צריך לציין כי האתר מאובטח בצורה תקינה, בדרך כלל עם סמל מנעול. אם תבדוק את השרת שלך באמצעות מבחן השרת של SSL Labs, הוא יקבל ציון A.
בוא נסיים בבדיקה של תהליך החידוש.
שלב 5 — אימות חידוש אוטומטי של Certbot
תעודות של Let’s Encrypt תקפות למשך תשעים יום בלבד. זה על מנת לעודד משתמשים לאוטומט תהליך החידוש של התעודות שלהם. החבילה certbot
שהותקנה תטפל בכך עבורנו על ידי הוספת טיימר systemd שיריץ פעמיים ביום ויחדש באופן אוטומטי כל תעודה שבעתים לה פחות של לפגות.
ניתן לשאול על מצב הטיימר באמצעות systemctl
:
Output● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service
כדי לבדוק את תהליך החידוש, ניתן לבצע ניסיון יבש עם certbot
:
אם לא רואים שגיאות, הכל מוכן. כאשר נדרש, Certbot יחדש את התעודות שלך ויטען מחדש את Nginx כדי לאסוף את השינויים. אם תהליך החידוש האוטומטי נכשל, Let’s Encrypt ישלח הודעה לכתובת הדוא"ל שציינת, ויזהה כאשר התעודה שלך מתקרבת לתוקף.
מסקנה
במדריך זה, התקנת את לקוח Let’s Encrypt certbot
, הורדת תעודות SSL עבור הדומיין שלך, הגדרת Nginx להשתמש בתעודות אלה, והתקנת חידוש אוטומטי של התעודות. אם יש לך שאלות נוספות על שימוש ב־Certbot, התיעוד הרשמי הוא המקום המתאים להתחיל.