#15 Динамические модули Nginx
Inhoudsopgave:
- voorwaarden
- Certbot installeren
- De Dh (Diffie-Hellman) -groep genereren
- Het verkrijgen van een Let's Encrypt SSL-certificaat
- Automatisch vernieuwen Let's Encrypt SSL-certificaat
- Conclusie
Let's Encrypt is een gratis, geautomatiseerde en open certificaatautoriteit ontwikkeld door de Internet Security Research Group (ISRG) die gratis SSL-certificaten levert.
Certificaten uitgegeven door Let's Encrypt worden vertrouwd door alle belangrijke browsers en zijn 90 dagen geldig vanaf de uitgiftedatum.
Deze zelfstudie laat zien hoe u een gratis Let's Encrypt SSL-certificaat installeert op Debian 10, Buster met Nginx als een webserver. We zullen ook laten zien hoe Nginx moet worden geconfigureerd om het SSL-certificaat te gebruiken en HTTP / 2 in te schakelen.
voorwaarden
Zorg ervoor dat aan de volgende voorwaarden is voldaan voordat u doorgaat met de gids:
- Aangemeld als root of gebruiker met sudo-rechten. Het domein waarvoor u het SSL-certificaat wilt verkrijgen, moet naar uw openbare server-IP wijzen. We gebruiken
example.com
Nginx geïnstalleerd.
Certbot installeren
We gebruiken de certbot-tool om de certificaten te verkrijgen en te vernieuwen.
Certbot is een volledig functionele en eenvoudig te gebruiken tool die de taken automatiseert voor het verkrijgen en vernieuwen van Let's Encrypt SSL-certificaten en het configureren van webservers om de certificaten te gebruiken.
Het certbot-pakket is inbegrepen in de standaard Debian-opslagplaatsen. Voer de volgende opdrachten uit om certbot te installeren:
sudo apt update
sudo apt install certbot
De Dh (Diffie-Hellman) -groep genereren
Diffie-Hellman-sleuteluitwisseling (DH) is een methode voor het veilig uitwisselen van cryptografische sleutels via een onbeveiligd communicatiekanaal.
We gaan een nieuwe set 2048 bit DH-parameters genereren om de beveiliging te versterken:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
U kunt ook de grootte wijzigen tot 4096 bits, maar het genereren kan meer dan 30 minuten duren, afhankelijk van de entropie van het systeem.
Het verkrijgen van een Let's Encrypt SSL-certificaat
Om een SSL-certificaat voor het domein te verkrijgen, gaan we de Webroot-plug-in gebruiken. Het werkt door een tijdelijk bestand te maken voor het valideren van het gevraagde domein in de
${webroot-path}/.well-known/acme-challenge
. De Let's Encrypt-server doet HTTP-aanvragen bij het tijdelijke bestand om te valideren dat het aangevraagde domein wordt opgelost naar de server waarop certbot wordt uitgevoerd.
We gaan alle HTTP-aanvragen voor
.well-known/acme-challenge
/var/lib/letsencrypt
aan een enkele map,
/var/lib/letsencrypt
.
Voer de volgende opdrachten uit om de map te maken en schrijfbaar te maken voor de Nginx-server:
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
Om dubbele code te voorkomen, maken we twee fragmenten die worden opgenomen in alle Nginx-serverblokbestanden.
Open uw teksteditor en maak het eerste fragment,
letsencrypt.conf
:
sudo nano /etc/nginx/snippets/letsencrypt.conf
/etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
Het tweede fragment
ssl.conf
bevat de chippers die worden aanbevolen door Mozilla, maakt OCSP nieten, HTTP Strict Transport Security (HSTS) mogelijk en dwingt weinig op beveiliging gerichte HTTP-headers af.
sudo nano /etc/nginx/snippets/ssl.conf
/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.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; 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=63072000" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
Zodra u klaar bent, opent u het blokbestand van de
letsencrypt.conf
en neemt u het
letsencrypt.conf
fragment op zoals hieronder wordt weergegeven:
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.com
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Maak een symbolische koppeling naar de map met
sites-enabled
om het domein
sites-enabled
te schakelen:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Start de Nginx-service opnieuw om de wijzigingen van kracht te laten worden:
sudo systemctl restart nginx
U bent nu klaar om de SSL-certificaatbestanden te verkrijgen door de volgende opdracht uit te voeren:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Als het SSL-certificaat met succes is verkregen, wordt het volgende bericht op uw terminal afgedrukt:
IMPORTANT NOTES: 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 2020-02-22. 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:
Bewerk het domeinserverblok en neem de SSL-certificaatbestanden als volgt op:
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.com
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 }
De bovenstaande configuratie vertelt Nginx om van HTTP naar HTTPS en van www naar niet-www-versie om te leiden.
Start de Nginx-service opnieuw of laad deze opnieuw om de wijzigingen door te voeren:
sudo systemctl restart nginx
Open uw website met
https://
en u ziet een groen slotpictogram.
Automatisch vernieuwen Let's Encrypt SSL-certificaat
De certificaten van Let's Encrypt zijn 90 dagen geldig. Om de certificaten automatisch te verlengen voordat ze verlopen, maakt het certbot-pakket een cronjob die twee keer per dag wordt uitgevoerd en automatisch elk certificaat 30 dagen vóór de vervaldatum vernieuwt.
Bij verlenging moet de nginx-service opnieuw worden geladen zodat de server het certificaat kan laden. Voeg
--renew-hook "systemctl reload nginx"
aan het bestand
--renew-hook "systemctl reload nginx"
zodat het er zo uitziet:
sudo nano /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"
Test het automatische verlengingsproces door deze opdracht uit te voeren:
sudo certbot renew --dry-run
Als er geen fouten zijn, betekent dit dat het vernieuwingsproces succesvol was.
Conclusie
Het hebben van een SSL-certificaat is tegenwoordig een must. Het beveiligt uw website, verhoogt de SERP-positie en stelt u in staat HTTP / 2 op uw webserver in te schakelen.
In deze zelfstudie hebben we u laten zien hoe u SSL-certificaten kunt genereren en vernieuwen met behulp van het certbot-script. We hebben ook laten zien hoe u Nginx configureert om de certificaten te gebruiken.
Raadpleeg de Certbot-documentatie voor meer informatie over Certbot.
nginx debian laten we certbot ssl coderenBeveilig nginx met laten we coderen op debian 9
In deze zelfstudie leggen we uit hoe u de Certbot-tool kunt gebruiken om een gratis SSL-certificaat voor Nginx op Debian 9 te verkrijgen. We zullen ook laten zien hoe u Nginx configureert om het SSL-certificaat te gebruiken en HTTP / 2 in te schakelen.
Beveiligde nginx met laten we coderen op ubuntu 18.04
Let's Encrypt is een gratis en open certificaatautoriteit ontwikkeld door de Internet Security Research Group. In deze zelfstudie geven we stapsgewijze instructies over hoe u uw Nginx kunt beveiligen met Let's Encrypt met behulp van de certbot-tool op Ubuntu 18.04
Beveiligde nginx met laten we coderen op ubuntu 16.04
In deze zelfstudie geven we stapsgewijze instructies over hoe u uw Nginx kunt beveiligen met Let's Encrypt met behulp van de certbot-tool op Ubuntu 16.04