אנדרואיד

אבטח nginx עם בוא להצפין באובונטו 16.04

Установка бесплатного SSL-сертификата (A-grade) Let's Encrypt на nginx (Ubuntu 16.04)

Установка бесплатного SSL-сертификата (A-grade) Let's Encrypt на nginx (Ubuntu 16.04)

תוכן עניינים:

Anonim

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 שלנו.

/etc/nginx/snippets/letsencrypt.conf

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 כמוצג להלן:

/etc/nginx/sites-available/example.com.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 כדי שינויים ייכנסו לתוקף:

sudo systemctl reload nginx

חידוש אוטומטי של אישור SSL

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

מכיוון שאנו משתמשים בתוסף האינטרנט של certbot webroot ברגע שהתחדש האישור, עלינו לטעון מחדש את שירות nginx. לשם כך צרף --renew-hook "systemctl reload nginx" לקובץ /etc/cron.d/certbot כך שזה נראה כך:

/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