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
במידה והוא אכן פעיל, הפלט אמור להראות בערך כך:
על מנת לשנות את הכללים ולאפשר תעבורה פנימה בפרוטוקול HTTPS יש להקליד את הפקודות הבאות:
sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'
וכעת אם נבדוק את הסטטוס והחוקים, הפלו אמור להראות כך:
ד' – התקנת תעודת ה 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 או האם לאפשר לגשת לשרת גם בצורה לא מאובטחת (לא מומלץ):
במידה ותבחרו ב Redirect (השיטה המומלצת), כל בקשה שתגיע ב HTTP תופנה הפניית 301 ל HTTPS. 301 הוא קוד המורה על הפניה קבועה בין URL ונמצא בשימוש בעיקר למטרות SEO (אפטימיזציה למנועי חיפוש). מעבר לעניין SEO, ביצוע הפניה זו משמעותו היא שהתעבורה לאתר תמיד תהיה מוצפנת.
כעת, Cerbot יבצע את השינויים הנדרשים בקונפיגורציה של שרת ה apache ויאתחל אותו על מנת שהשינויים יכנסו לתוקף. במידה והפעולה הצליחה, תקבלואת ההודעה הבאה:
זהו, הצלחתם. התעודה הותקנה בהצלחה וכעת השרת שלכם משתמש בפרוטוקול HTTPS. איך ניתן לדעת? ובכן זה פשוט מאוד. פתחו את הדפדפן שלכם וגלשו לכתובת האתר. בשורת הפקודה תוכלו לראות סמל של מנעול קטן בצבע ירוק. לחצו עליו, ואז על Certificate. בחלון שיפתח תוכלו לראות את פרטי התעודה:
דרך נוספת לבדוק את אמינות התעודה היא באמצעות האתר ssllabs. כנסו לאתר והקלידו את הכתובת של האתר שלכם. התוצאה תראה בערך כך:
במידה ותקבלו הערה אודות שימוש בפרוטוקולים נמוכים וכן חבילות אבטחה מיושנות יש לערוך ידנית את ההגדרות בשרת שלכם על מנת לבטל את התמיכה בהם. במדריך הבא אסביר כיצד לבצע זאת.
ה' – וידוא תהליך החידוש האוטומטי
כפי שציינתי בתיחלתו של המדריך, Certbot גם אחראי על ביצוע חידוש אוטומטי של התעודה. התזמון של החידוש מתבצע על ידי טיימר שמותקן על השרת. על מנת לבדוק את הסטטוס של הטיימר יש לכתוב את הפקודה הבאה:
sudo systemctl status certbot.timer
במידה והכל תקין נקבל פלט שנראה כך:
כעת, נבדוק את תהליך החידוש עצמו על ידי הרצה יבשה באמצעות הפקודה הבאה:
sudo certbot renew --dry-run
אם לא מתקבלת שגיאה, סימן שהתהליך מתבצע באופן תקין.
בהצלחה!
Leave a Reply