איך להתקין תעודת SSL אוטומטית וחינמית ב-letsencrypt בשרתי אינטרהוסט?

במדריך זה אסביר כיצד לחדש תעודה ב – L’ets Encrypt בממשקי הניהול, וגם ללא ממשק ניהול (Certbot).

אבל קודם כול מה זה SSL?

SSL זה ראשי תיבות של Secured Sockets Layer – פרוטוקל של תקשורת מוצפנת בין מחשבים אשר דואג לתקשורת מאובטחת.

אבל רגע, אתם שואלים "למה בעצם אני צריך את זה מה זה נותן לי?"

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

חידוש התעודה:

יש לנו שני סוגים של SSL: אחד בתשלום ואחד שהוא חינמי. יש סוגי חברות שנותנות לנו את השירות הזה בחינם למשל: Let’s encrypt,Cloudflare .השוני הוא בעצם שתעודה חינמית תקפה לשלושה חודשים, ומאוד קלה ליישום.

תעודה שהיא בתשלום, יכולה להיות תקפה לתקופה של שנה ומעלה. Let’sencrypt מנפיק תעודה, שנתמכת בשלל דפדפנים. בתוך הDirectAdmin cPanel , יש תמיכה מובנית ב – Letsencrypt שבעצם נותן לכם גישה לממשק הניהול, ללא צורך להיכנס לשרת כדי לבצע פעולות של חידוש תעודה, הכול מתבצע בלחיצות כפתור. חשוב לציין ממשקי הניהול הם אינם דפדפנים אלה אפשר להכינס דרכם דרך הדפדפן.

*מצורף למטה מדריך איך לחדש תעודות בממשקי ניהול אלה*

תעודת SSL הינה הכרחית לפעילות מאובטחת של האתר, לא משנה אם היא קנויה או חינמית. ללא תעודה, לא יוכלו לגשת לאתר שלכם בצורה מאובטחת.

התקנה:

DirectAdmin: 

Let’s encrypt זוהי עמותה שמנפיקה תעודות SSL בחינם שנתמכת בשלל דפדפנים, ניתמכת גם DirectAdmin וcPanel. קודם כול אנחנו נפעיל את Let’s encrypt בתוך קובץ הקונפיגורציה, בכך שנתחבר לשרת בSSH ונשתמש בעורך קבצים.

אנחנו נירשום את הנתיב הזה:

vim /usr/local/directadmin/conf/directadmin.conf

נימצא את השורה שמופיע בה letsencrypt=0 ונשנה את הערך מ0 ל1 וככה אנחנו מאפשרים את Lets encrypt.

לאחר מכן ניגש ל – Domain Setup , ונבחר בדומיין הנכון שנרצה לאקטב את תעודת ה – SSL עליו.

1.נחפש את הדומיין או היוזר המבוקשים.
2.מתחת ל Account Manager, נלחץ על SSL Certificates:

directadmin

3.לאחר מכן נוכל לראות שיש לנו אפשרויות חינמיות של תעודות. אנחנו נמלא את הטופס של כול הנתונים של הדומיין שלנו, צריך לציין את הדומיין והסאב דומיין הרלוונטיים (בדרך כלל המינימום הוא הדומיין הראשי + WWW):

ssl installation

4.לאחר מכן נילחץ על SAVE . ונקבל את ההודעה הזאת

ssl installation

בעקבות הRestart של Apache התעודה של Let’s encrypt תותקן באופן אוטומטי ולאחר כמה דקות התעודה תהיה מוכנה.

cPanel:

1. היכנס למשתמש שלך cPanel
2. בוחרים בLets encrypt ssl

cpanel installation

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

cpanel issue

4. נילחץ על issue כדי להתקין את את התעודה:

לאחר מכן נקבל הודעה שהתעודה הותקנה בהצלחה:

ומה אם אין לי DireactAdmin או Cpanel? בשביל זה נשתמש ב – Certbot.

מה זה Certbot?

תוסף שהוא קוד פתוח חינמי, שמשתמש ב Let’s encrypt שמוציא תעודת SSL על הדומיין שלכם.

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

חלק 1:

התקנת PIP

sudo apt install python3 python3-venv libaugeas0

הכנת סביבה וירטואלית

sudo python3 -m venv /opt/certbot

sudo /opt/certbot/bin/pip install –upgrade pip

התקנת Cerbot על Apache או NGNIX

Apache:

sudo /opt/certbot/bin/pip install certbot certbot-apache

NGNIX:

sudo /opt/certbot/bin/pip install certbot certbot-nginx

יצירת קישור סימבולי להרצת Certbot:

sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot

לאחר שהתקנו את Cetrbot, נרצה להנפיק תעודה דרכו.
יש לנו שתי אופציות שאנחנו יכולים לבחור שהניתוב יעשה דרך Apache או NGINIX.

Apache:

sudo certbot –apache

NGINX:

sudo certbot –nginx

לאחר מכן יוצרים SSL לדומיין ספציפי

sudo certbot –apache -d example.com -d www.interhost.co.il

רק תעודות של SSL

Apache:

sudo certbot certonly –apache

NGINX:

sudo certbot certonly –nginx

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

לאחר מכן תהייה לכם אפשרות לאפשר גישה רק דרך HTTPS, גם אם ירשמו HTTP, הבקשה תנותב ל – HTTPS.

לאחר ההתקנה, אנחנו נרצה לבדוק שיש לנו תעודה.
לצורך כך, אנו ניכנס לאתר שניקרא www.sslshopper.com, ונבחן שם את הדומיין המבוקש.

קבצי התעודה של כל דומיין מאוחסנים בנתיב:

cd /etc/letsencrypt/live

Let’s encrypt נותן לנו תעודה למשך 90 יום, כדי למנוע מצב בו התעודה תפוג, Certbot בודק את הסטטוס של התעודה פעמיים ביום, ומחדש אותה במידה ונשאר 30 יום ופחות.

אפשר לראות הגדרות ב Systemd ו cron.d:

systemctl show certbot.timer

cat /etc/cron.d/certbot

Debian 11

כדי להתקין את ה – Certbot, יש צורך בחבילת snapd בשרת.
כדי להתקין את Snapd ראשית נבצע Update:

sudo apt update

לאחר מכן נתקין את Snapd:

sudo apt install snapd

במידה ותופיע שאלה, אם אנחנו רוצים להתקין את Snapd , נשיב Y.

לאחר מכן אנחנו נתקין את ה – CORE של Snapd:

sudo snap install core

לאחר מכן נרענן את ה – Core, מה שבעצם יתן לו אינדיקציה שיש לנו את הגרסה הכי חדישה של Snapd:

sudo snap refresh core

לאחר מכן אפשר להתקין את ה – Certbot:

sudo snap install –classic certbot

ההתקנה תבוצע בנתיב /snap/bin/ , היא תיצור לינק סימבולי לנתיב הזה /usr/bin/ כדי לאפשר להריץ את Certbot בכול מקום במערכת הפעלה:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

שלב 2 – התקנת תעודת SSL:

Certbot צריך לאתר את המארח הוירטואלי בקונפיגורציה של אפאצי', כדי לקנפג תעודת SSL לנתיב/דומיין התואמים. תבוצע התאמה ל – SERVERNAME שמתאים לדומיין שביקשת להנפיק לו תעודה.

בשביל לבדוק את את המארח הוירטואלי בשביל הדומיין שלך תשתמש בVIM:

sudo vim /etc/apache2/sites-available/<your_domain>.conf

מוצאים את השורה SERVERNAME, זה אמור להיות עם הדומיין שאתה רוצה לשים עליו תעודה


ServerName <your_domain>;

אם זה לא עדכן את הserver name תשמור את הקובץ
לאחר מכן תבדוק את ההתחביר של השינויים שביצעת בעורך(VIM)

sudo apache2ctl configtest

אם אין שגיאות תחביר הוא אמור לתת לך את התשובה הזאת

Output
. . .
Syntax OK

במידה ויש לך שגיאה אנא תבדוק את התחביר שוב ותנסה לשמור את הקובץ,

לאחר מכן מבצאים ריסטרט לapache

sudo systemctl reload apache2

Certbot מוצא את המארח הוירטואלי הנכון ומעדכן אותו
עכשיו צריך לעדכן את החומת האש ותעבורה שמאפשרת HTTPS.

שלב 3 מאפשר HTTPS דרך חומת האש:

אם יש לך מותקן UFW חומת אש שפעילה צריך רק להגדיר אותה שתאפשר תעבורת HTTPS
למזלנו שאנחנו התקנו debian UFW מגיע עם פרופיל שעוזרים לשנות את החוקים של חומת האש בישביל תעבורת HTTP/HTTPS.

אפשר לבדוק זאת בעזרת הפקודה:

sudo ufw status

בישביל לאפשר את תעבורת HTTPS צריך לאפשר את “WWW FULL” ולמחוק את פרופיל הWWW

sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'

לאחר מכן נבדוק את הסטטוס

sudo ufw status

וזה הפלט שיצא לנו:

Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
WWW Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW Full (v6) ALLOW Anywhere (v6)

שלב 4 – הנפקת תעודת SSL:

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

sudo certbot –apache -d your_domain -d <www.your_domain>

אם אתה מריץ את Certbot בפעם הראשונה אתה תקבל הודעה לשים את המייל שלך ולהסכים לתנאים של השירות.
הוא ישאל אותך אם תירצה לשתף את המייל שלך עם Electronic Frontier Foundation, חברה שלא לוקחת כסף שמפתחת את Certbot, אפשר גם לסרב לזה.

לאחר מכן Certbot יתקשר עם Let’s encrypt server, ויריץ תהליך כדי לאמת שהשליטה בדומיין שאתה רוצה להנפיק לו תעודה, היא אכן אצלך.
במידה וזה עבר בהצלחה, הקופיגורציה תתעדכן אוטומטית, וגם האפאצ'י יופעל מחדש כדי לטעון את ההגדרות החדשות.
Certbot יעדכן בהודעה שהתהליך עבר בהצלחה והתעודה הותקנה:

Output
Successfully 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-10-31.
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 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

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donat

 * Donating to EFF: https://eff.org/donate-le
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
e

התעודה ירדה הותקנה ובוצעה הפעלה מחדש.
תנסה לגשת לאתר שלך באמצעות https://yourdomain, ותיראה אם יש לך את המנעול המצביע על כך שהאתר מאובטח ב – SSL.

ונסיים עם חידוש אוטומטי מCertbot.

תעודת Lets encrypt תקפה ל90 יום.
בעל הדומיין יכול לחדש את התעודה באופן אוטומטי, יש ב – Certbot תהליך אוטומטי המתבצע פעמיים ביום, אשר בודק אם התעודה פגה ב30 יום הקרובים.
במידה והיא אכן הולכת לפוג ב – 30 יום הקרובים, ירוץ חידוש אוטומטי.

sudo certbot renew –dry-run

אם לא התקבלו שגיאות, הכול תקין.

Certbot באופן אוטומטי מחדש את התעודה ועושה הפעלה מחדש להפאצ'י כדי שהגדרות החדשות יכנסו לתוקף.
במידה ויש שגיאה והתהליך ניכשל, Let’s encrypt תישלח הודעת מייל לכתובת שסיפקת לו בהתחלה, שתזהיר לגבי פקיעת התוקף של התעודה.

התקנת Certbot ב – CentOS7:

קודם נוסיף את EPEL באמצעות הפקודה הזאת:

 sudo yum install epel-release

לאחר שיש לנו גישה לריפוזטורי, התקן את הדברים הנדרשים:

 sudo yum install certbot python2-certbot-apache mod_ssl

ייתכן ובמהלך ההתקנה נתבקש לייבא GPD key, המפתח הזה מוודא את החבילה שאתה מתקין כדי לאפשר את ההתקנה לחץ על Y ואז ENTER.
לאחר התקנה אפשר להתחיל להריץ את ה – CERTBOT ולהנפיק תעודה לדומיינים שלך.
עכשיו לאחר ש – CERTBOT הותקן אפשר לבקש מימנו להנפיק לנו תעודת SSL.
כדי להתחיל את ההתקנה ולהנפיק את התעודה שמכסה רק דומיין אחד תריץ את הפקודה הזאת:

 sudo certbot –apache -d <example.com>

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

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

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

sudo certbot –apache

לאחר מכן נקבל את הפלט הזה:

Output
Please 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):2

לאחר שההתקנה הסתיימה בהצלחה נקבל הודעה דומה לזאת:

Output
IMPORTANT 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 2019-08-14. 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

קבצי התעודה יהיו זמינים בנתיב /etc/letsencrypt/live.
עכשיו התעודה שלך הונפקה והותקנה, ואפשר לבדוק את תעודת ה – SSL.
לאחר מכן אפשר לבדוק את התעודה ב https://www.sslshopper.com/ssl-checker.html
ולקבל מידע על התעודה שברשותך.
התעודה של Let’s Encrypt זמינה ל90 יום אבל ההמלצה היא לחדש את התעודה אחרי 60 יום כדי לימנוע בעיות בCERTBOT יש פקודה של חידוש תעודה שבודקת פעמיים ביום את התעודה וליראות שהוא לא פג תוקף

sudo certbot renew –dry-run

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Processing /etc/letsencrypt/renewal/example.com.conf
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for example.com
http-01 challenge for www.example.com
Waiting for verification…
Cleaning up challenges
Resetting dropped connection: acme-staging-v02.api.letsencrypt.org

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
new certificate deployed with reload of apache server; fullchain is
/etc/letsencrypt/live/example.com/fullchain.pem
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/example.com/fullchain.pem (success)

 

דרך טובה נוספת היא לבצע Cron job שגם תבצע בצורה אוטומטית חידושים בישבילנו.
בגלל שהחידוש מתבצע ברגע שזה מגיע ל30 יום אפשר לבצע Cron job שתבצע בישבילנו בדיקה אחת לשבוע או כול יום.
כדי ליצור Cron job נירשום crontab בROOT ונריץ

sudo crontab -e

עורך הטקסט יפתח לנו את הדיפולט של ה – CRON (ברוב המקרים טקסט ריק).
לתוך הרשימה נכניס את הקרון ג'וב הבא:

0 0,12 * * * root certbot renew –renew-hook 'service httpd reload'

תפקידו של הקרון המדובר, הוא לבדוק פעמיים ביום את התעודות, והאם יש צורך לחדש אותן.
תעודות שתאריך תפוגתן פחות מ – 30 ימים יחודשו אוטומטית.

לאחר מכן נשמור את הקובץ, וסיימנו.

Facebook
Twitter
LinkedIn