Certbot + Nginx + TLS - Secure Your HTTP with Let's Encrypt
Cuprins:
- Cerințe preliminare
- Instalați Certbot
- Generați grupul puternic Dh (Diffie-Hellman)
- Obținerea unui certificat SSL Encrypt
- Reînnoirea automată a certificatului SSL
- Concluzie
Let's Encrypt este o autoritate de certificare gratuită și deschisă dezvoltată de Grupul de cercetare pentru securitatea internetului (ISRG). Certificatele emise de Let's Encrypt sunt astăzi de încredere de aproape toate browserele.
În acest tutorial, vom oferi instrucțiuni pas cu pas despre cum să vă securizați Nginx cu Let's Encrypt folosind instrumentul certbot de pe Ubuntu 16.04.
Cerințe preliminare
Asigurați-vă că ați îndeplinit următoarele cerințe înainte de a continua cu acest tutorial:
- Aveți un nume de domeniu îndreptat către IP-ul serverului dvs. public. În acest tutorial vom folosi
example.com. Aveți Nginx instalat urmând Cum se instalează Nginx pe Ubuntu 16.04.
Instalați Certbot
Certbot este un utilitar scris în python care poate automatiza sarcinile pentru obținerea și reînnoirea certificatelor Let's Encrypt SSL și configurarea serverelor web.
Mai întâi instalați pachetul
software-properties-common
care oferă instrumentul
add-apt-repository
necesar pentru adăugarea de PPA-uri suplimentare.
Actualizați indexul pachetelor și instalați
software-properties-common
cu:
sudo apt update
sudo apt install software-properties-common
După terminarea instalării, adăugați depozitul PPA certbot la sistemul dvs. folosind următoarea comandă:
sudo add-apt-repository ppa:certbot/certbot
Actualizați lista de pachete și instalați pachetul certbot:
sudo apt update
sudo apt install certbot
Generați grupul puternic Dh (Diffie-Hellman)
Schimbul de chei Diffie – Hellman (DH) este o metodă de a schimba în siguranță cheile criptografice pe un canal de comunicare nesecurizat. Generați un nou set de parametri DH 2048 biți pentru a consolida securitatea:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Dacă doriți, puteți modifica dimensiunea până la 4096 biți, dar în acest caz, generația poate dura mai mult de 30 de minute în funcție de entropia sistemului.
Obținerea unui certificat SSL Encrypt
Pentru a obține un certificat SSL pentru domeniul nostru, vom folosi pluginul Webroot care funcționează prin crearea unui fișier temporar pentru validarea domeniului solicitat în directorul
${webroot-path}/.well-known/acme-challenge
. Serverul Let's Encrypt face solicitări HTTP la fișierul temporar pentru a valida dacă domeniul solicitat se rezolvă la serverul unde rulează certificbot.
Pentru a fi mai simplu, vom face o hartă a tuturor cererilor HTTP pentru
.well-known/acme-challenge
către un singur director,
/var/lib/letsencrypt
.
Următoarele comenzi vor crea directorul și îl vor putea scrie pentru serverul Nginx.
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
Pentru a evita duplicarea codului, creați următoarele două fragmente pe care le vom include în toate fișierele noastre de blocuri de server 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;
Fragmentul de mai sus include ciperele recomandate de Mozilla, permite OCSP Stapling, HTTP Strict Transport Security (HSTS) și aplică câteva anteturi HTTP centrate pe securitate.
După crearea fragmentelor, deschideți blocul serverului de domeniu și includeți fragmentul de
letsencrypt.conf
așa cum se arată mai jos:
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Activați blocul de server creând un link simbolic de la
sites-available
la
sites-enabled
:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Reîncărcați configurația Nginx pentru ca modificările să aibă efect:
sudo systemctl reload nginx
Rulați scriptul certbot cu pluginul webroot și obțineți fișierele de certificat SSL:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Dacă certificatul SSL este obținut cu succes, certificbot va imprima următorul mesaj:
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:
Acum că avem fișierele de certificare, editați blocul serverului de domeniu după cum urmează:
/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 }
Cu configurația de mai sus, forțăm HTTPS și redirecționăm versiunea
www
a domeniului către versiunea
non www
.
Reîncărcați serviciul Nginx pentru ca modificările să aibă efect:
Reînnoirea automată a certificatului SSL
Certificatele Let's Encrypt sunt valabile 90 de zile. Pentru a reînnoi automat certificatele înainte de expirare, pachetul certbot creează un cronjob care va rula de două ori pe zi și va reînnoi automat orice certificat cu 30 de zile înainte de expirarea acestuia.
Deoarece folosim plug-in-ul webroot certbot odată ce certificatul este reînnoit, trebuie să reîncărcăm serviciul nginx. Pentru a face acest lucru, adăugați
--renew-hook "systemctl reload nginx"
la fișierul
/etc/cron.d/certbot
astfel încât arată așa:
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"
Pentru a testa procesul de reînnoire, utilizați comutatorul
--dry-run
:
sudo certbot renew --dry-run
Dacă nu există erori, înseamnă că procesul de reînnoire a avut succes.
Concluzie
În acest tutorial, ați folosit clientul Encrypt, certificbot pentru a obține certificate SSL pentru domeniul dvs. De asemenea, ați creat fragmente Nginx pentru a evita duplicarea codului și ați configurat Nginx pentru a utiliza certificatele. La sfârșitul tutorialului ați creat un cronjob pentru reînnoirea automată a certificatelor.
nginx ubuntu hai să criptăm certbot sslSecurizați nginx cu ajutorul criptării pe Centos 7
În acest tutorial, vom oferi instrucțiuni pas cu pas despre cum să vă securizați Nginx cu Let's Encrypt folosind instrumentul certbot de pe CentOS 7
Securizați nginx cu ajutorul criptării pe ubuntu 18.04
Let's Encrypt este o autoritate de certificare gratuită și deschisă dezvoltată de Grupul de cercetare pentru securitatea internetului. În acest tutorial, vom oferi instrucțiuni pas cu pas despre cum să vă securizați Nginx cu Let's Encrypt folosind instrumentul certbot de pe Ubuntu 18.04
Securizați nginx cu ajutorul criptării centos 8
În acest tutorial, vă vom oferi instrucțiuni pas cu pas despre cum se instalează un certificat SSL gratuit Encrypt SSL pe CentOS 8 care rulează Nginx ca server web. Vom arăta, de asemenea, cum să configurați Nginx pentru a utiliza certificatul SSL și pentru a activa HTTP / 2.







