NGINX за пределами nginx: njs, nginMesh, Unit... / Николай Шадрин (NGINX)
Innehållsförteckning:
- förutsättningar
- Installera Certbot
- Generera Strong Dh (Diffie-Hellman) -gruppen
- Få ett SSL-certifikat för Let's Encrypt
- Automatisk förnyelse av Let's Encrypt SSL-certifikat
- Slutsats
Let's Encrypt är en gratis, automatiserad och öppen certifikatutfärdare utvecklad av Internet Security Research Group (ISRG) som tillhandahåller gratis SSL-certifikat.
Certifikat som utfärdats av Let's Encrypt är betrodda av alla större webbläsare och gäller i 90 dagar från utfärdatum.
I den här handledningen ger vi steg för steg instruktioner om hur du installerar ett gratis Let's Encrypt SSL-certifikat på CentOS 8 som kör Nginx som en webbserver. Vi kommer också att visa hur man konfigurerar Nginx för att använda SSL-certifikatet och aktivera HTTP / 2.
förutsättningar
Innan du fortsätter ska du se till att du uppfyllt följande förutsättningar:
- Du har ett domännamn som pekar på din offentliga IP. Vi använder
example.com
Du har Nginx installerat på din CentOS-server. Din brandvägg är konfigurerad för att acceptera anslutningar på portarna 80 och 443.
Installera Certbot
Certbot är ett gratis kommandoradsverktyg som förenklar processen för att få och förnya Let's Encrypt SSL-certifikat från och automatiskt aktivera HTTPS på din server.
Certbot-paketet ingår inte i de vanliga CentOS 8-lagren, men det kan laddas ner från leverantörens webbplats.
Kör följande
wget
kommando som root- eller sudo-användare för att ladda ner certbot-skriptet till
/usr/local/bin
katalogen:
sudo wget -P /usr/local/bin
När nedladdningen är klar gör filen körbar:
sudo chmod +x /usr/local/bin/certbot-auto
Generera Strong Dh (Diffie-Hellman) -gruppen
Diffie – Hellman nyckelutbyte (DH) är en metod för att säkert utbyta kryptografiska nycklar över en osäker kommunikationskanal.
Generera en ny uppsättning 2048-bitars DH-parametrar genom att skriva följande kommando:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Få ett SSL-certifikat för Let's Encrypt
För att få ett SSL-certifikat för domänen kommer vi att använda Webroot-plugin som fungerar genom att skapa en tillfällig fil för att validera den begärda domänen i
${webroot-path}/.well-known/acme-challenge
katalogen. Let's Encrypt-servern gör HTTP-förfrågningar till den tillfälliga filen för att bekräfta att den begärda domänen löses till servern där certbot körs.
För att göra det enklare kommer vi att kartlägga alla HTTP-begäranden för
.well-known/acme-challenge
till en enda katalog,
/var/lib/letsencrypt
.
Följande kommandon skapar katalogen och gör den skrivbar för Nginx-servern.
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp nginx /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
För att undvika duplikeringskod skapar du följande två utdrag som kommer att inkluderas i alla Nginx-serverblockfiler:
sudo mkdir /etc/nginx/snippets
/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:10m; 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;
Utdraget ovan innehåller de flishuggare som rekommenderas av Mozilla, möjliggör OCSP-häftning, HTTP Strict Transport Security (HSTS) och upprätthåller få säkerhetsfokuserade
När utdragen har skapats öppnar du domänserverns block och inkluderar
letsencrypt.conf
, som visas nedan:
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Ladda om Nginx-konfigurationen så att ändringar träder i kraft:
sudo systemctl reload nginx
Kör certbot-verktyget med webroot-plugin för att få SSL-certifikatfiler för din domän:
sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Om det är första gången du
certbot
installerar verktyget de saknade beroenden.
När SSL-certifikatet framgångsrikt har erhållits, skriver certbot ut följande meddelande:
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-03-12. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto 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 när du har certifikatfilerna kan du redigera ditt domänserverblock enligt följande:
/etc/nginx/conf.d/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 }
Med konfigurationen ovan tvingar vi HTTPS och omdirigerar versionen www till non www.
Ladda slutligen Nginx-tjänsten för att ändringarna ska träda i kraft:
sudo systemctl reload nginx
Öppna nu din webbplats med
https://
så ser du en grön låsikon.
Automatisk förnyelse av Let's Encrypt SSL-certifikat
Let's Encrypts certifikat är giltiga i 90 dagar. För att automatiskt förnya certifikaten innan de löper ut ska du skapa en cronjob som körs två gånger om dagen och automatiskt förnya alla certifikat 30 dagar före utgång
Använd
crontab
kommandot för att skapa en ny cronjob:
sudo crontab -e
Klistra in följande rad:
0 */12 * * * root test -x /usr/local/bin/certbot-auto -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && /usr/local/bin/certbot-auto -q renew --renew-hook "systemctl reload nginx"
Spara och stäng filen.
För att testa förnyelseprocessen kan du använda certbot-kommandot följt av -
--dry-run
omkopplaren:
sudo certbot renew --dry-run
Om det inte finns några fel betyder det att testförnyelseprocessen var framgångsrik.
Slutsats
I den här tutorialen har vi visat dig hur du använder Let's Encrypt-klienten, certbot för att ladda ner SSL-certifikat för din domän. Vi har också skapat Nginx-utdrag för att undvika duplicering av kod och konfigurerat Nginx för att använda certifikaten. I slutet av självstudien har vi skapat en cronjob för automatisk förnyelse av certifikat.
För mer information om Certbot, besök deras dokumentationssida.
nginx centos låt oss kryptera certbot sslSäkra nginx med låt oss kryptera på centos 7
I den här handledningen ger vi steg för steg instruktioner om hur du säkra din Nginx med Let's Encrypt med certbot-verktyget på CentOS 7
Säkra nginx med låt oss kryptera på debian 9
I den här tutorialen kommer vi att förklara hur man använder Certbot-verktyget för att få ett gratis SSL-certifikat för Nginx på Debian 9. Vi kommer också att visa hur man konfigurerar Nginx för att använda SSL-certifikatet och aktivera HTTP / 2.
Säkra nginx med låt oss kryptera på ubuntu 18.04
Let's Encrypt är en gratis och öppen certifikatutfärdare utvecklad av Internet Security Research Group. I den här handledningen ger vi steg för steg instruktioner om hur du säkra din Nginx med Let's Encrypt med certbot-verktyget på Ubuntu 18.04