הרחבת המדריך האחרון של הדרכה על Let’s Encrypt לגבי תעודות SSL/TLS בחינם, במאמר הזה אנו מדגימים כיצד לקבל ולהתקין תעודות SSL/TLS בחינם שניתנו על ידי רשות תעודות Let’s Encrypt עבור שרת האינטרנט Apache על CentOS/RHEL 7/6 וגם עבור הפצות Fedora.
אם אתה מחפש להתקין את Let’s Encrypt עבור Apache ב- Debian וב- Ubuntu, עקוב אחר המדריך הבא:
הגדרת Let’s Encrypt לאבטחת Apache ב- Debian וב- Ubuntu
סביבת מבחן

דרישות
- A registered domain name with valid
A
records to point back to your server public IP Address. - שרת Apache מותקן עם מודול SSL מופעל ואירוח וירטואלי מופעל במידה ואתה מארח דומיינים או תתי דומיינים מרובים.
שלב 1: התקנת שרת אינטרנט Apache
1. אם עדיין לא מותקן, ניתן להתקין את הדמון httpd על ידי הוצאת הפקודה הבאה:
# yum install httpd
2. על מנת שתוכנת Let’s Encrypt תעבוד עם Apache, הוודא כי המודול SSL/TLS מותקן באמצעות הוצאת הפקודה הבאה:
# yum -y install mod_ssl
3. לבסוף, התחל את שרת ה- Apache עם הפקודה הבאה:
# systemctl start httpd.service [On RHEL/CentOS 7] # service httpd start [On RHEL/CentOS 6]
שלב 2: התקנת תעודת SSL של Let’s Encrypt
4. השיטה הפשוטה ביותר להתקנת לקוח Let’s Encrypt היא על ידי שיבוט ממאגר הקוד של github במערכת הקבצים שלך. כדי להתקין git במערכת שלך, עליך לאפשר את מאגרי Epel עם הפקודה הבאה.
# yum install epel-release
5. לאחר שהוספת מאגרי Epel במערכת שלך, המשך והתקן את לקוח git על ידי הרצת הפקודה הבאה:
# yum install git
6. כעת, כשהתקנת את כל התלויות הנדרשות כדי לטפל ב- Let’s Encrypt, עבור אל הספרייה /usr/local/
והתחל למשוך את לקוח Let’s Encrypt ממאגר הקוד הרשמי שלו ב-github עם הפקודה הבאה:
# cd /usr/local/ # git clone https://github.com/letsencrypt/letsencrypt
שלב 3: קבלת תעודת SSL חינם של Let’s Encrypt עבור Apache
7. תהליך קבלת תעודה חינם של Let’s Encrypt עבור Apache ממוכנת עבור CentOS/RHEL בזכות תוסף האפאצ'י.
נפעיל את תסריט Let’s Encrypt כדי לקבל תעודת SSL. עבור אל ספריית ההתקנה של Let’s Encrypt מתוך /usr/local/letsencrypt
והרץ את הפקודה letsencrypt-auto
על ידי מסירת האפשרות --apache
ואת הדגל -d
עבור כל תת־דומיין שתזדקקו לתעודה.
# cd /usr/local/letsencrypt # ./letsencrypt-auto --apache -d your_domain.tld

8. ספק את כתובת הדוא"ל שתשמש על ידי Let’s Encrypt לשחזור מפתח האבוד שלך או להודעות דחופות ולחץ על Enter כדי להמשיך.

9. אשר את תנאי הרישיון על ידי לחיצה על מקש Enter.

10. ב־CentOS/RHEL, כברירת מחדל, שרת Apache אינו משתמש במושג של הפרדת ספריות עבור מארחים מאופשרים מאשר מארחים זמינים (לא פעילים) כמו בהפצות המבוססות על Debian.
בנוסף, אירוח וירטואלי מושבת כברירת מחדל. ההצהרה של Apache שמציינת את שם השרת (ServerName) אינה נמצאת בקובץ ההגדרות של SSL.
כדי להפעיל הוראה זו, Let’s Encrypt תבקש ממך לבחור מארח וירטואלי. בגלל שהוא לא מוצא שום Vhost זמין, בחר בקובץ ssl.conf
כדי שהוא ישתנה באופן אוטומטי על ידי לקוח Let’s Encrypt ולחץ Enter כדי להמשיך.

11. לבחור את השיטה קלה לבקשות HTTP וללחוץ Enter כדי להמשיך.

12. לבסוף, אם הכל עבר בהצלחה, מודעת ברכה צריכה להופיע על המסך. ללחוץ Enter כדי לשחרר את הפרומט.

זהו! כעת יש לך תעודת SSL/TLS נכונה עבור התחום שלך. עכשיו אתה יכול להתחיל לגלוש באתר שלך באמצעות פרוטוקול HTTPS.
שלב 4: לבדוק את הצפינה של Let’s Encrypt בחינם על הדומיין שלך
13. כדי לבדוק את תקינות הצפינה של דומיין ה-SSL/TLS שלך, בקר בקישור הבא ובדוק את התעודה שלך על דומיינך.
https://www.ssllabs.com/ssltest/analyze.html

14. אם תקבל סדרת דוחות בנושא הפרצות באבטחה של הדומיין שלך במבחנים שבוצעו, אז עליך לתקן את החורים באבטחה האלה באופן דחוף.
הדירוג הכללי של דרגת C הופך את הדומיין שלך לא מאובטח בצורה מאוד. כדי לתקן את בעיות האבטחה האלה, פתח את קובץ התצורה של SSL של Apache ובצע את השינויים הבאים:
# vi /etc/httpd/conf.d/ssl.conf
חפש את השורה עם ההצהרה SSLProtocol
והוסף את -SSLv3
בסופה של השורה.

עבור עמוק יותר בקובץ, חפש והער את השורה עם SSLCipherSuite
על ידי הוספת #
מקדימה והוסף את התוכן הבא מתחת לשורה זו:
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLOptions +StrictRequire

15. לאחר שביצעת את כל השינויים הללו, שמור וסגור את הקובץ, ואז הפעל מחדש את המנהל של Apache כדי ליישם את השינויים.
# systemctl restart httpd.service [On RHEL/CentOS 7] # service httpd restart [On RHEL/CentOS 6]
16. כעת, בדוק שוב את מצב ההצפנה של הדומיין שלך, על ידי ביקור באותה קישור כמו למעלה. כדי לבצע בדיקות מחדש, לחץ על קישור ניקוי המטמון מהאתר.
https://www.ssllabs.com/ssltest/analyze.html

עכשיו אתה צריך לקבל דירוג A בכלל, שזה אומר שהדומיין שלך מאובטח בצורה גבוהה.
שלב 4: חידוש תעודות Let’s Encrypt באופן אוטומטי על Apache
17. גרסת הבטא של תוכנת Let’s Encrypt משחררת תעודות עם תאריך תפוגה שלאחר 90 ימים. לכן, כדי לחדש את תעודת ה-SSL, עליך להריץ שוב את הפקודה letsencrypt-auto
לפני תאריך התפוגה, עם אותם אפשרויות ודגלים שהושגו בעת קבלת התעודה הראשונית.
דוגמה על כיצד לחדש את התעודה באופן ידני מוצגת למטה.
# cd /usr/local/letsencrypt # ./letsencrypt-auto certonly --apache --renew-by-default -d your_domain.tld
18. כדי לאוטומטיזציה של תהליך זה, צרו את הסקריפט הבא שמסופק על ידי github erikaheidi, בתיקיית /usr/local/bin/
עם התוכן הבא. (הסקריפט מותאם קצת כדי לשקף את ספריית ההתקנה שלנו של letsencrypt).
# vi /usr/local/bin/le-renew-centos
הוספו את התוכן הבא לקובץ le-renew-centos
:
!/bin/bash domain=$1 le_path='/usr/local/letsencrypt' le_conf='/etc/letsencrypt' exp_limit=30; get_domain_list(){ certdomain=$1 config_file="$le_conf/renewal/$certdomain.conf" if [ ! -f $config_file ] ; then echo "[ERROR] The config file for the certificate $certdomain was not found." exit 1; fi domains=$(grep --only-matching --perl-regex "(?<=domains \= ).*" "${config_file}") last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}') if [ "${last_char}" = "," ]; then domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}') fi echo $domains; } if [ -z "$domain" ] ; then echo "[ERROR] you must provide the domain name for the certificate renewal." exit 1; fi cert_file="/etc/letsencrypt/live/$domain/fullchain.pem" if [ ! -f $cert_file ]; then echo "[ERROR] certificate file not found for domain $domain." exit 1; fi exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s) datenow=$(date -d "now" +%s) days_exp=$(echo \( $exp - $datenow \) / 86400 |bc) echo "Checking expiration date for $domain..." if [ "$days_exp" -gt "$exp_limit" ] ; then echo "The certificate is up to date, no need for renewal ($days_exp days left)." exit 0; else echo "The certificate for $domain is about to expire soon. Starting renewal request..." domain_list=$( get_domain_list $domain ) "$le_path"/letsencrypt-auto certonly --apache --renew-by-default --domains "${domain_list}" echo "Restarting Apache..." /usr/bin/systemctl restart httpd echo "Renewal process finished for domain $domain" exit 0; fi
19. העניקו הרשאות ביצוע לסקריפט, התקינו את חבילת bc והריצו את הסקריפט כדי לבדוק אותו. השתמשו בשם הדומיין שלכם כפרמטר מיקום עבור הסקריפט. הנה פקודות הדורשות לביצוע השלב הזה:
# yum install bc # chmod +x /usr/local/bin/le-renew-centos # /usr/local/bin/le-renew-centos your_domain.tld
20. לבסוף, באמצעות הגדרת משימות של Linux, הוסיפו משימת cron חדשה כדי להריץ את הסקריפט כל שני חודשים, לוודא שהתעודה שלך תעודכן לפני תאריך התפוגה.
# crontab -e
הוסיפו את השורה הבאה בתחתית הקובץ.
0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1
זהו! השרת שלך של Apache הרץ על גבי מערכת CentOS/RHEL כעת מספק תוכן SSL באמצעות תעודת SSL של Let’s Encrypt חינמית.
Source:
https://www.tecmint.com/install-lets-encrypt-ssl-certificate-to-secure-apache-on-rhel-centos/