במדריך זה אסביר כיצד לחדש תעודה ב – 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:
3.לאחר מכן נוכל לראות שיש לנו אפשרויות חינמיות של תעודות. אנחנו נמלא את הטופס של כול הנתונים של הדומיין שלנו, צריך לציין את הדומיין והסאב דומיין הרלוונטיים (בדרך כלל המינימום הוא הדומיין הראשי + WWW):
4.לאחר מכן נילחץ על SAVE . ונקבל את ההודעה הזאת
בעקבות הRestart של Apache התעודה של Let’s encrypt תותקן באופן אוטומטי ולאחר כמה דקות התעודה תהיה מוכנה.
cPanel:
1. היכנס למשתמש שלך cPanel
2. בוחרים בLets encrypt ssl
3. בוחרים דומיין ולוחצים על 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 ימים יחודשו אוטומטית.
לאחר מכן נשמור את הקובץ, וסיימנו.