Установка бесплатного SSL-сертификата (A-grade) Let's Encrypt на nginx (Ubuntu 16.04)
תוכן עניינים:
- תנאים מוקדמים
- התקן את Certbot
- צור קבוצת Dh (דיפי-הלמן) חזקה
- קבלת אישור בואו להצפין SSL
- חידוש אוטומטי של אישור SSL
- סיכום
Let's Encrypt היא רשות אישורים חינמית ופתוחה שפותחה על ידי קבוצת המחקר בנושא אבטחת אינטרנט (ISRG). כמעט כל הדפדפנים כיום מהימנים על אישורים שהונפקו על ידי Let's Encrypt.
במדריך זה אנו נספק הוראות שלב אחר שלב כיצד לאבטח את ה- Nginx שלך באמצעות Let's Encrypt באמצעות כלי certbot באובונטו 16.04.
תנאים מוקדמים
וודא כי עמדת בתנאים המוקדמים הבאים לפני שתמשיך במדריך זה:
- יש לך שם תחום שמצביע על IP השרת הציבורי שלך. במדריך זה נשתמש ב-
example.com
. יש לך Nginx המותקן על ידי ביצוע התקנת Nginx ב- Ubuntu 16.04.
התקן את Certbot
Certbot הוא כלי שנכתב בפיתון שיכול להפוך את המשימות לאוטומציה להשגת וחידוש Let's Encrypt SSL אישורים ולהגדרת שרתי אינטרנט.
תחילה התקן את החבילה -מאפייני
software-properties-common
המספקת את הכלי המאריך
add-apt-repository
הדרוש להוספת PPAs נוספים.
עדכן את אינדקס החבילות והתקן את
software-properties-common
עם:
sudo apt update
sudo apt install software-properties-common
לאחר השלמת ההתקנה, הוסף את מאגר ה- certbot PPA למערכת שלך באמצעות הפקודה הבאה:
sudo add-apt-repository ppa:certbot/certbot
עדכן את רשימת החבילות והתקן את חבילת certbot:
sudo apt update
sudo apt install certbot
צור קבוצת Dh (דיפי-הלמן) חזקה
החלפת מפתחות Diffie – Hellman (DH) היא שיטה להחלפה מאובטחת של מפתחות קריפטוגרפיים דרך ערוץ תקשורת לא מאובטח. צור מערכת חדשה של פרמטרים DH של 2048 ביט לחיזוק האבטחה:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
אם תרצו תוכלו לשנות את הגודל עד 4096 ביטים, אך במקרה כזה, הדור עשוי לארוך יותר מ -30 דקות, תלוי באנטרופיה של המערכת.
קבלת אישור בואו להצפין SSL
כדי להשיג אישור SSL עבור התחום שלנו אנו נשתמש בתוסף Webroot שעובד על ידי יצירת קובץ זמני לאימות הדומיין המבוקש בספרייה
${webroot-path}/.well-known/acme-challenge
. שרת בואו להצפין מבצע בקשות HTTP לקובץ הזמני כדי לאמת כי הדומיין המבוקש פותר לשרת בו פועל certbot.
כדי להפוך את זה פשוט יותר אנו למפות את כל בקשות ה- HTTP עבור.
.well-known/acme-challenge
לספריה יחידה,
/var/lib/letsencrypt
.
הפקודות הבאות תיצור את הספרייה ותהיה ניתנת לכתיבה לשרת Nginx.
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
כדי להימנע משכפול קוד, צור את שני הקטעים הבאים אותם אנו הולכים לכלול בכל קבצי החסימה של שרת Nginx שלנו.
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
/etc/nginx/snippets/ssl.conf
ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
הקטע שלמעלה כולל את המלצות השבבים על ידי מוזילה, מאפשר סיכות OCSP, HTTP Strict Transport Transport (HSTS) ואכיפת מעט כותרות HTTP ממוקדות אבטחה.
לאחר יצירת ה- Snippets, פתח את חסימת שרת הדומיין וכולל את קטע הטקסט
letsencrypt.conf
כמוצג להלן:
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
הפעל את חסימת השרת על ידי יצירת קישור סימבולי
sites-available
sites-enabled
:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
טען מחדש את תצורת Nginx כדי שינויים ייכנסו לתוקף:
sudo systemctl reload nginx
הפעל את סקריפט certbot באמצעות התוסף webroot וקבל את קבצי אישור ה- SSL:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
אם אישור ה- SSL מתקבל בהצלחה, certbot ידפיס את ההודעה הבאה:
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 2018-04-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. 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:
כעת כשיש לנו את קבצי האישורים, ערוך את בלוק שרת הדומיין באופן הבא:
/etc/nginx/sites-available/example.com.conf
server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; #… other code }
עם התצורה שלמעלה אנו מאלצים HTTPS ומפנים מחדש את גרסת ה-
www
של הדומיין לגירסת ה-
non www
.
טען מחדש את שירות Nginx כדי שינויים ייכנסו לתוקף:
חידוש אוטומטי של אישור SSL
תעודות בואו להצפין תקפות למשך 90 יום. כדי לחדש אוטומטית את האישורים לפני שפג תוקפם, חבילת ה- certbot יוצרת עבודת תופת אשר תפעל פעמיים ביום ותחדש אוטומטית כל אישור 30 יום לפני תום תוקפה.
מכיוון שאנו משתמשים בתוסף האינטרנט של certbot webroot ברגע שהתחדש האישור, עלינו לטעון מחדש את שירות nginx. לשם כך צרף
--renew-hook "systemctl reload nginx"
לקובץ
/etc/cron.d/certbot
כך שזה נראה כך:
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload nginx"
כדי לבדוק את תהליך החידוש, השתמש במתג
--dry-run
:
sudo certbot renew --dry-run
אם אין שגיאות, פירוש הדבר שתהליך החידוש היה מוצלח.
סיכום
במדריך זה השתמשת בלקוח Let's Encrypt, certbot כדי לקבל אישורי SSL עבור התחום שלך. יצרת גם קטעי Nginx כדי למנוע כפילות קוד והגדרת את Nginx לשימוש בתעודות. בסוף ההדרכה הקמתם מציצה לחידוש תעודה אוטומטית.
nginx אובונטו בואו להצפין certbot sslאבטח nginx עם בוא להצפין ב- centos 7

במדריך זה אנו נספק הוראות שלב אחר שלב כיצד לאבטח את ה- Nginx שלך באמצעות Let's Encrypt באמצעות כלי certbot ב- CentOS 7
אבטח nginx עם בוא להצפין ב- debian 9

במדריך זה נסביר כיצד להשתמש בכלי Certbot כדי להשיג אישור SSL בחינם עבור Nginx ב- Debian 9. כמו כן, נראה כיצד להגדיר את Nginx להשתמש בתעודת SSL ולאפשר HTTP / 2.
אבטח nginx עם בוא להצפין באובונטו 18.04

Let's Encrypt היא רשות אישורים בחינם ופתוחה שפותחה על ידי קבוצת המחקר בנושא אבטחת אינטרנט. במדריך זה נספק הוראות שלב אחר שלב כיצד לאבטח את ה- Nginx שלך באמצעות Let's Encrypt באמצעות כלי certbot באובונטו 18.04