הקדמה
Let’s Encrypt הוא סוכנות אישור (CA) המסייעת בהשגת והתקנת תעודות TLS/SSL בחינם, מה שמאפשר את השימוש בHTTPS מוצפן בשרתי רשת. היא מפשטת את התהליך על ידי ספקת לקוח תוכנה, Certbot, שמנסה לאוטומט את רוב (אם לא כל) השלבים הנדרשים. כיום, כל התהליך של השגת והתקנת התעודה הוא לגמרי אוטומטי גם על Apache וגם על Nginx.
במדריך זה, תשתמש ב-Certbot כדי להשיג תעודת SSL בחינם עבור Apache על Ubuntu ולוודא שהתעודה הזו מתחדשת אוטומטית.
המדריך זה משתמש בקובץ מארח וירטואלי נפרד במקום קובץ הקונפיגורציה הافتראי של Apache עבור הגדרת האתר שיישרם על ידי Let’s Encrypt. אנו ממליצים ליצור קבצי מארח וירטואליים חדשים עבור כל דומיין שמאוחסן על שרת משום שזה עוזר להימנע מטעויות שכיחות ושומר על קבצי הקונפיגורציה הافتראיים כהגדרה מנוסה.
איך להגן על Apache באמצעות Let’s Encrypt על Ubuntu
- התקנת Certbot
- בדיקת תצורת הוירטואליים של Apache
- הרשאת גישת HTTPS דרך החומה
- השגת תעודת SSL
- אימות החלפת אוטומטית של Certbot
דרישות מוקדמות
להמשיך עם ההדרכה הזו, יהיה עליך להכין:
-
שרת Ubuntu אחד שהוגדר עם משתמש לא-root עם זכויות ניהול יותר מגיעות באמצעות הפקודה
sudo
וביטוח חופשי פעיל. תוכל להגדיר את זה על-ידי עקביית ההדרכה שלנו להגדרת השרת ההתחלתי לUbuntu. -
שם דומיין מוכר לחלוטין. ההדרכה הזו תשתמש ב-your_domain כדוגמה לאורך כל ההדרכה. תוכל לרכוש שם דומיין באמצעות Namecheap, לקבל אחד בחינם באמצעות Freenom, או להשתמש ברשם הדומיינים של בחירתך.
-
שני הרשומות DNS הבאות נקבעו עבור השרת שלך. תוכל לעקוב אחרי ההקדמה הזו ל-DNS של DigitalOcean לפרטים על איך להוסיף אותן.
- רשומת A עם
your_domain
המכוונת לכתובת IP הציבורית של השרת שלך. - רשומת A עם
www.your_domain
המכוונת לכתובת IP הציבורית של השרת שלך.
- רשומת A עם
-
Apache הותקן על פי איך להתקין אפקח על Ubuntu. הבטיח שיש לך קובץ מארח וירטואלי עבור הדומיין שלך. ההדרכה הזו תשתמש ב-
/etc/apache2/sites-available/your_domain.conf
כדוגמה.
שלב 1 — התקנת Certbot
להשגת תעודת SSL עם Let’s Encrypt, עליך להתקין את התוכנה Certbot על השרת שלך. תשתמש במאגרי החבילות המוגדרים באובונטו לשם כך.
קודם, עדכן את מדריך החבילות המקומי:
אתה צריך שתי חבילות: certbot
, ו-python3-certbot-apache
. האחרת היא תוסף שמשלב את Certbot עם אפיקי, מה שהופך את זה אפשרי למטרת אוטומציה בהשגת התעודה והגדרת HTTPS בשרת האינטרנט שלך באמצעות פקודה אחת:
תופיע הודעה שתבקשך לאשר את ההתקנה על-ידי לחיצה על Y
, ואז ENTER
.
סרטבוט עכשיו מותקן על שרתך. בשלב הבא, תאשר את הקונפיגורציה של אפאחי כדי לוודא שהמארח הוירטואלי שלך נקבע כראוי. זה יוודא שהסקריפט של certbot
יוכל לזהות את הדומיינים שלך ולהגדיר מחדש את שרת האינטרנט שלך כדי להשתמש בהצעידת SSL החדשה שנוצרה אוטומטית.
שלב 2 — בדיקת הקונפיגורציה של מארח הוירטואלי של Apache
כדי לקבל ולהגדיר את SSL באופן אוטומטי עבור שרת האינטרנט שלך, יש ל Certbot למצוא את המארח הוירטואלי הנכון בתוך קבצי הקונפיגורציה של Apache. שמות הדומיינים של השרת שלך יישארו מההוראות ServerName
ו-ServerAlias
המוגדרות בתוך הבלוק הקונפיגורציה VirtualHost
.
אם עקבת אחרי שלב ההתקנה של מארח הוירטואלי בהדרכת התקנת Apache, אתה אמור להיהודר בלוק VirtualHost עבור הדומיין שלך ב- /etc/apache2/sites-available/your_domain.conf
עם ההוראות ServerName
וגם ServerAlias
כבר מוגדרות כראוי.
כדי לאשר שזה מוגדר, פתח את קובץ מארח הוירטואלי עבור הדומיין שלך באמצעות nano
או מסוגל העורך הטקסט שלך:
מצא את השורות הקיימות של ServerName
ו-ServerAlias
. הן אמורות להיות מופיעות כך:
...
ServerName your_domain
ServerAlias www.your_domain
...
אם כבר יש לך את ServerName
ו-ServerAlias
הקבועים כך, יכול לצאת מהעורך הטקסט ולעבור לשלב הבא. אם התצורה הוירטואלית הנוכחית שלך לא מתאימה לדוגמה, עדכן אותה בהתאם. אם אתה משתמש ב- nano
, יכול לצאת על-ידי לחיצה על CTRL+X
, ואז Y
ו-ENTER
כדי לאשר את השינויים שלך, אם ישנם. אז, הריץ את הפקודה הבאה כדי לאשר את השינויים שלך:
אתה אמור לקבל Syntax OK
כתגובה. אם תקבל שגיאה, פתח מחדש את קובץ הוירטואלי המארח ובדוק לפרטים שגויים או תווים חסרים. ברגע שהתסדיר של קובץ התצורה שלך תקין, הטען מחדש את אפיפרי כדי שהשינויים ייכנסו לתוקף:
עם השינויים האלה, סרטבוט יוכל למצוא את הבלוק הוירטואלי הנכון ולעדכן אותו.
השלב הבא, תעדכן את החומה כדי לאפשר תנועת HTTPS.
שלב 3 — אפשרי תנועת HTTPS דרך החומה
אם יש לך את החומה UFW הפעילה, כפי שמומלץ במדריכים הקדם הנחות, יהיה עליך להתאים את ההגדרות כדי לאפשר תנועת HTTPS. לאחר ההתקנה, אפיפרי רשמה מספר פרופילי אפליקציה שונים ב-UFW. יכול לנצל את הפרופיל Apache Full כדי לאפשר תנועת HTTP ו-HTTPS על השרת שלך.
לוודא סוג התраffic המותר כרגע בשרת שלך, בדוק את המצב:
אם עקבת אחר המדריך ההתקנה של Apache שלנו, יהיה לך פלט דומה לכך, שמשמעותו היא שרק תраffic HTTP על הפורט 80
מותר כרגע:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
לאפשר תраffic HTTPS, אפשר את הפרופיל "Apache Full":
אז מחק את הפרופיל העכברי "Apache":
המצב שלך יוצג כך:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
אתה עכשיו מוכן להריץ את Certbot ולהשיג את התעודות שלך.
שלב 4 — השגת תעודת SSL
Certbot מספק כמה דרכים להשגת תעודות SSL דרך תוספים. התוסף של Apache ידאג להגדרה מחדש של Apache ולטעינה מחדש של ההגדרות כשנדרש. לשימוש בתוסף זה, הפעל את הפקודה הבאה:
התסריט הזה יבקש ממך לענות על סדרת שאלות כדי להגדיר את תעודת הSSL שלך. ראשית, ישאל אותך למסר כתובת דוא״ל תקינה. הדוא״ל הזה ישמש להודעות רינוול והודעות בטחון:
OutputSaving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): you@your_domain
אחרי תן כתובת דוא״ל תקינה, הקש ENTER
כדי לעבור לשלב הבא. אז יתבקש ממך לאשר אם אתה מסכים עם תנאי השירות של Let’s Encrypt. תוכל לאשר זאת על-ידי לחיצה על Y
ואז ENTER
:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
שלאחר מכן, ישתלח שאלה אם היית רוצה לשתף את כתובת האימייל שלך עם הארגון חזית האלקטרוני כדי לקבל חדשות ומידע אחר. אם אינך רוצה להירשם לתוכן שלהם, כתוב N
. אחרת, כתוב Y
ואז לחץ ENTER
כדי לעבור לשלב הבא:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
בשלב הבא יתבקש ממך להודיע ל-Certbot אילו כתובות דומיין ברצונך להפעיל HTTPS עבורן. הכתובות הדומייניות הרשומות נכנסות אוטומטית מתצורת הוירטואלי המאפיין של Apache, לכן חשוב לוודא שיש לך את ההגדרות הנכונות של ServerName
ו-ServerAlias
בוירטואלי המאפיין שלך. אם ברצונך להפעיל HTTPS עבור כל הכתובות הדומייניות הרשומות (מומלץ), יכול להשאר את הפונקס בחלל ולחץ ENTER
כדי לעבור. אחרת, בחר את הדומיינים שברצונך להפעיל HTTPS עבורם על ידי רשימת מספריהם התואמים, מופרדים בפסיקים ו/ או חללים, ואז לחץ ENTER
:
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: your_domain
2: www.your_domain
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):
אחרי השלב הזה, התצורה של Certbot הושלמה, ותוצג לך הערות הסופיות אודות התעודה החדשה שלך ואיפה למצוא את הקבצים המיוצרים:
OutputSuccessfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-07-10.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for your_domain to /etc/apache2/sites-available/your_domain-le-ssl.conf
Successfully deployed certificate for www.your_domain.com to /etc/apache2/sites-available/your_domain-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https:/your_domain and https://www.your_domain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
התעודה שלך כעת מותקנת וטעונה לתצורת Apache. נסה לרענן את האתר שלך באמצעות https://
ושימו לב לאינדיקטור הביטחון של הדפדפן שלך. הוא צריך להצביע שהאתר שלך מוגן באופן נכון, בדרך כלל על ידי סמל טלס שבסרגל הכתובת.
אפשר להשתמש בSSL Labs Server Test כד
בשלב הבא והסופי, תבדוק את תכונת ההחדשה האוטומטית של Certbot, שמבטיחה שהתעודה שלך תתחדש אוטומטית לפני תאריך התפוגה.
שלב 5 — בדיקת החדשה אוטומטית של Certbot
התעודות של Let’s Encrypt תקפות רק לתשעים יום. זה על מנת לעודד משתמשים לאוטומט את תהליך רינוול התעודות שלהם, כמו גם לוודא שתעודות שנעשו בשימוש לא נכון או מפוחדות יגיעו לתפוגה מוקדם יותר במקום מאוחר יותר.
החבילה certbot
שהתקנת לוקחת תשלום בהחדשות על ידי כלול סקריפט רינוול ב- /etc/cron.d
, שמנוהל על ידי שרות systemctl
שנקרא certbot.timer
. הסקריפט הזה רץ פעמיים ביום וירן אוטומטית תעודות שנמצאות בתוך שלושים יום מתפוגתן.
כדי לבדוק את מצב השרות הזה ולוודא שהוא פעיל, הקרי את הפקודה הבאה:
הפלט שלך יהיה דומה לזה הבא:
Output● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset:>
Active: active (waiting) since Mon 2022-04-11 20:52:46 UTC; 4min 3s ago
Trigger: Tue 2022-04-12 00:56:55 UTC; 4h 0min left
Triggers: ● certbot.service
Apr 11 20:52:46 jammy-encrypt systemd[1]: Started Run certbot twice daily.
כדי לבדוק את תהליך הרינוול, תוכל לבצע רינוול דמה עם certbot
:
OutputSaving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/your_domain.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Simulating renewal of an existing certificate for your_domain and www.your_domain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/your_domain/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
אם לא תקבל שום שגיאות, אתה מוכן. כשנדרש, Certbot ירנה את התעודות שלך וירeload Apache כדי לאסוף את השינויים. אם תהליך הרינוול האוטומטי יכשל אי פעם, Let’s Encrypt ישלח מסר לאימייל שהזנת, מודיע לך כשהתעודה שלך עומדת לתפוג.
סיכום
בהדרכה זו, התקנתם את הלקוח של Let’s Encrypt certbot
, הגדרתם והתקנתם תעודת SSL עבור הרשת שלכם, ואימתם ששירות הרenewal הautomatic של Certbot פעיל בתוך systemctl
. אם יש לכם שאלות נוספות על השימוש בCertbot, המסמך המקורי הוא מקום טוב להתחיל.
Source:
https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu