Nginx без downtime на продакшн системе / Nginx hot reload
Inhoudsopgave:
- voorwaarden
- Certbot installeren
- Genereer Strong Dh (Diffie-Hellman) Group
- Het verkrijgen van een Let's Encrypt SSL-certificaat
- SSL-certificaat automatische verlenging
- Conclusie
Let's Encrypt is een gratis en open certificaatautoriteit ontwikkeld door de Internet Security Research Group (ISRG). Certificaten uitgegeven door Let's Encrypt worden tegenwoordig door bijna alle browsers vertrouwd.
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.
voorwaarden
Zorg ervoor dat u aan de volgende voorwaarden hebt voldaan voordat u doorgaat met deze zelfstudie:
- U hebt een domeinnaam die verwijst naar het IP-adres van uw openbare server. In deze tutorial zullen we
example.com
. U heeft Nginx geïnstalleerd door Nginx te volgen op Ubuntu 16.04.
Certbot installeren
Certbot is een hulpprogramma geschreven in python dat de taken voor het verkrijgen en vernieuwen van Let's Encrypt SSL-certificaten en het configureren van webservers kan automatiseren.
Installeer eerst het pakket
software-properties-common
, dat het hulpprogramma
add-apt-repository
dat nodig is voor het toevoegen van extra PPA's.
Update de pakkettenindex en installeer
software-properties-common
met:
sudo apt update
sudo apt install software-properties-common
Nadat de installatie is voltooid, voegt u de certbot PPA-repository toe aan uw systeem met de volgende opdracht:
sudo add-apt-repository ppa:certbot/certbot
Werk de pakkettenlijst bij en installeer het certbot-pakket:
sudo apt update
sudo apt install certbot
Genereer Strong Dh (Diffie-Hellman) Group
Diffie-Hellman-sleuteluitwisseling (DH) is een methode voor het veilig uitwisselen van cryptografische sleutels via een onbeveiligd communicatiekanaal. Genereer een nieuwe set 2048 bit DH-parameters om de beveiliging te versterken:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Als u wilt, kunt u de grootte wijzigen tot 4096 bits, maar in dat geval kan het genereren 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 ons domein te verkrijgen, gaan we de Webroot-plug-in gebruiken die werkt door een tijdelijk bestand te maken voor het valideren van het aangevraagde 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.
Om het eenvoudiger te maken, gaan we alle HTTP-aanvragen voor
.well-known/acme-challenge
/var/lib/letsencrypt
aan een enkele map,
/var/lib/letsencrypt
.
De volgende opdrachten maken de map en maken deze beschrijfbaar 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, maakt u de volgende twee fragmenten die we in al onze Nginx-serverblokbestanden gaan opnemen.
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;
Het bovenstaande fragment bevat de chippers die door Mozilla worden aanbevolen, maakt OCSP nieten, HTTP Strict Transport Security (HSTS) mogelijk en dwingt weinig op beveiliging gerichte HTTP-headers af.
Nadat de fragmenten zijn gemaakt, opent u het domeinserverblok en neemt u het
letsencrypt.conf
fragment op zoals hieronder wordt weergegeven:
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Activeer het serverblok door een symbolische link te maken van
sites-available
naar
sites-enabled
:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Laad de Nginx-configuratie opnieuw om de wijzigingen door te voeren:
sudo systemctl reload nginx
Voer het certbot-script uit met de webroot-plug-in en verkrijg de SSL-certificaatbestanden:
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, zal certbot het volgende bericht afdrukken:
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:
Nu we de certificaatbestanden hebben, bewerkt u het domein-serverblok als volgt:
/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 }
Met de bovenstaande configuratie dwingen we HTTPS en leiden we de
www
versie van het domein om naar de
non www
versie.
Laad de Nginx-service opnieuw om de wijzigingen door te voeren:
SSL-certificaat automatische verlenging
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.
Omdat we de certbot webroot-plug-in gebruiken zodra het certificaat is vernieuwd, moeten we ook de nginx-service opnieuw laden. Om dit te doen, voeg
--renew-hook "systemctl reload nginx"
aan het
/etc/cron.d/certbot
bestand zodat het er zo uitziet:
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"
Gebruik de certbot
--dry-run
schakelaar om het vernieuwingsproces te testen:
sudo certbot renew --dry-run
Als er geen fouten zijn, betekent dit dat het vernieuwingsproces succesvol was.
Conclusie
In deze zelfstudie hebt u de Let's Encrypt-client, certbot gebruikt om SSL-certificaten voor uw domein te verkrijgen. U hebt ook Nginx-fragmenten gemaakt om codeduplicatie te voorkomen en Nginx geconfigureerd om de certificaten te gebruiken. Aan het einde van de zelfstudie hebt u een cronjob ingesteld voor automatische certificaatverlenging.
nginx ubuntu laten we certbot ssl coderenBeveilig nginx met laten we coderen op centos 7
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 CentOS 7
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 debian 10 linux
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.