How To Secure Apache with Let's Encrypt on Ubuntu 18.04

Setup Let’s Encrypt With Apache on Ubuntu

Let's Encrypt היא רשות אישורים (CA) המספקת דרך קלה להשגת והתקנת תעודות TLS / SSL בחינם, ובכך מאפשרת שימוש בפרוטוקול HTTPS. כברירת מחדל, התעודה המסופקת על ידי Let's Encrypt תקיפה לתקופה של 90 יום אך מתחדשת באופן אוטומטי כאשר מספר הימים הנותרים לתוקפה יורד מתחת ל 30 יום. Certbot הנו כלי שתפקידו להפוך את תהליך התקנת התעודה לאוטומטי ככל שאפשר ונתמך הן ב Apache והן ב Nginx.

במדריך זה אסביר כיצד ניתן ליישם את התעודה של Let's Encrypt באמצעות Certbot על גבי שרת Ubuntu 18 עם apache. אך לפני שנתחיל אנא וודאו שהתקנתם והגדרתם לפחות אתר אחד על ה apache.
מדריך התקנה תוכלו למצוא בקישור הבא.

שלב א' – התקנת Certbot

השלב הראשון לשימוש ב- Let's Encrypt לקבלת תעודת SSL הוא התקנת Certbot על השרת.

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

ראשית, נוסיף את המאגר לרישמת המאגרים לשימוש על ידי הפקודה הבאה:

sudo add-apt-repository ppa:certbot/certbot

כעת, נתקין את החבילה של Certbot עבור Apache באמצעות הפקודה הבאה:

sudo apt install python-certbot-apache

שלב ב' – הכנת השרת להתקנת התעודה

על מנת ש Certbot יכול להנפיק ולהתקין את התעודה, עליו להיות מסוגל לזהות את ה Virtual Host על שרת ה Apache. כדי לזהות אותו הוא משתמש בהגדרת ה ServerName בקובץ הקונפיגורציה של האתר. על מנת לבדוק מה ה domain שלנו, הקלידו את הפקודה הבאה:

sudo nano /etc/apache2/sites-available/your_domain.conf

ומצאו את השורה שמתחילה ב ServerName

...
ServerName your_domain;
...

כאשר במקום your_domain אמור להופיע הדומיין שלכם, למשל example.com. שמרו את הקובץ וצאו מהעורך. כעת, הריצו את הפקודה הבאה בכדי לוודא את תקינות הקונפיגורציה:

sudo apache2ctl configtest

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

sudo systemctl reload apache2

כעת Certbot יכול לאתר את ה Virtual Host ולעדכן אותו.

חלק ג' – פתיחת חוקים ב Firewall על מנת לאפשר תעבורה בפרוטוקול HTTPS

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

sudo ufw status

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

Let's Encrypt - ufw status

על מנת לשנות את הכללים ולאפשר תעבורה פנימה בפרוטוקול HTTPS יש להקליד את הפקודות הבאות:

sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'

וכעת אם נבדוק את הסטטוס והחוקים, הפלו אמור להראות כך:

ufw status - allow https

ד' – התקנת תעודת ה SSL

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

sudo certbot --apache -d your_domain -d www.your_domain

פקודה זו תפעיל את Certbot עם הפלאגין של apache (מצויין על ידי הפרמטר apache–). בנוסף, נציין את נפרמטר d- אשר יגדיר ל certbot על איזה דומיין נרצה להתקין את התעודה (ניתן לשרשר מספר דומיינים). במידה ולא נציין דומיין נקבל רשימה של דומיינים לבחור מתוכה.

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

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

Let's Encrypt - Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.

במידה ותבחרו ב Redirect (השיטה המומלצת), כל בקשה שתגיע ב HTTP תופנה הפניית 301 ל HTTPS. 301 הוא קוד המורה על הפניה קבועה בין URL ונמצא בשימוש בעיקר למטרות SEO (אפטימיזציה למנועי חיפוש). מעבר לעניין SEO, ביצוע הפניה זו משמעותו היא שהתעבורה לאתר תמיד תהיה מוצפנת.

כעת, Cerbot יבצע את השינויים הנדרשים בקונפיגורציה של שרת ה apache ויאתחל אותו על מנת שהשינויים יכנסו לתוקף. במידה והפעולה הצליחה, תקבלואת ההודעה הבאה:

Let's Encrypt - Certbot - Congratulations! Your certificate and chain have been saved - techblog.co.il

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

Let's Encrypt Certificate info

דרך נוספת לבדוק את אמינות התעודה היא באמצעות האתר ssllabs. כנסו לאתר והקלידו את הכתובת של האתר שלכם. התוצאה תראה בערך כך:

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

ה' – וידוא תהליך החידוש האוטומטי

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

sudo systemctl status certbot.timer

במידה והכל תקין נקבל פלט שנראה כך:

certbot.timer דאשאוד

כעת, נבדוק את תהליך החידוש עצמו על ידי הרצה יבשה באמצעות הפקודה הבאה:

sudo certbot renew --dry-run

אם לא מתקבלת שגיאה, סימן שהתהליך מתבצע באופן תקין.

בהצלחה!

Be the first to comment

Leave a Reply

כתובת האימייל שלך לא תפורסם


*