Android

Sikker nginx med lad os kryptere på centos 7

HTTPS Is Easy Part 1: Adding HTTPS

HTTPS Is Easy Part 1: Adding HTTPS

Indholdsfortegnelse:

Anonim

Let's Encrypt er en gratis og åben certifikatmyndighed udviklet af Internet Security Research Group (ISRG). Certifikater udstedt af Let's Encrypt er tillid til næsten alle browsere i dag.

I denne tutorial giver vi trin for trin instruktioner om, hvordan du sikrer din Nginx med Let's Encrypt ved hjælp af certbot-værktøjet på CentOS 7.

Forudsætninger

Sørg for, at du har opfyldt følgende forudsætninger, før du fortsætter med denne tutorial:

  • Du har et domænenavn, der peger på din offentlige server-IP. I denne tutorial vil vi bruge example.com Du har aktiveret EPEL-arkivet og installeret Nginx ved at følge Sådan installeres Nginx på CentOS 7.

Installer Certbot

Certbot er et brugervenligt værktøj, der kan automatisere opgaverne til at få og forny Let's Let's Encrypt SSL-certifikater og konfigurere webservere.

Sådan installeres certbot-pakken fra EPEL-arkivkørslen:

sudo yum install certbot

Generer Strong Dh (Diffie-Hellman) -gruppen

Diffie – Hellman key exchange (DH) er en metode til sikker udveksling af kryptografiske nøgler over en usikret kommunikationskanal.

Generer et nyt sæt 2048 bit DH-parametre ved at skrive følgende kommando:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Hvis du kan lide, kan du ændre størrelsen op til 4096 bit, men i dette tilfælde kan genereringen tage mere end 30 minutter afhængigt af systemets entropi.

At få et Let's Encrypt SSL-certifikat

For at få et SSL-certifikat til vores domæne vil vi bruge Webroot-plugin, der fungerer ved at oprette en midlertidig fil til validering af det anmodede domæne i ${webroot-path}/.well-known/acme-challenge bibliotek. Let's Encrypt-serveren fremsætter HTTP-anmodninger til den midlertidige fil for at validere, at det anmodede domæne løses til den server, hvor certbot kører.

For at gøre det lettere skal vi kortlægge alle HTTP-anmodninger om .well-known/acme-challenge til et enkelt bibliotek, /var/lib/letsencrypt .

De følgende kommandoer opretter mappen og gør den skrivbar til Nginx-serveren.

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp nginx /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt

For at undgå duplikering af kode skal du oprette følgende to kodestykker, som vi vil medtage i alle vores Nginx-serverblokfiler:

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: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;

Uddraget ovenfor inkluderer de flishuggere, der er anbefalet af Mozilla, aktiverer OCSP-hæftning, HTTP Strict Transport Security (HSTS) og håndhæver få sikkerhedsfokuserede

Når uddragene er oprettet, skal du åbne letsencrypt.conf og inkludere kodestykket letsencrypt.conf som vist nedenfor:

/etc/nginx/conf.d/example.com.conf

server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }

Genindlæs Nginx-konfigurationen, så ændringerne træder i kraft:

sudo systemctl reload nginx

Du kan nu køre Certbot med webroot-plugin og få SSL-certifikatfiler til dit domæne ved at udstede:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Hvis SSL-certifikatet er opnået med succes, udskriver certbot følgende meddelelse:

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-06-11. 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 hvor du har certifikatfilerne, kan du redigere din domæneserverblok som følger:

/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 ovenstående konfiguration tvinger vi HTTPS og omdirigerer www til non www versionen.

Endelig genindlæser Nginx-tjenesten for ændringer at træde i kraft:

sudo systemctl reload nginx

Automatisk fornyelse af Let's Encrypt SSL-certifikat

Let's Encrypt's certifikater er gyldige i 90 dage. For automatisk at fornye certifikaterne, før de udløber, opretter vi en cronjob, der kører to gange om dagen, og som automatisk fornyer ethvert certifikat 30 dage før det udløber.

Kør crontab kommandoen for at oprette en ny cronjob:

sudo crontab -e

Indsæt følgende linjer:

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"

Gem og luk filen.

For at teste fornyelsesprocessen kan du bruge certbot-kommandoen efterfulgt af - --dry-run :

sudo certbot renew --dry-run

Hvis der ikke er nogen fejl, betyder det, at testfornyelsesprocessen var vellykket.

Konklusion

I denne tutorial anvendte du Let's Encrypt-klienten, certbot til at downloade SSL-certifikater til dit domæne. Du har også oprettet Nginx-kodestykker for at undgå duplikering af kode og konfigureret Nginx til at bruge certifikaterne. I slutningen af ​​selvstudiet har du konfigureret en cronjob til automatisk fornyelse af certifikater.

nginx centos lad os kryptere certbot ssl

Dette indlæg er en del af Install LEMP Stack i CentOS 7-serien.

Andre indlæg i denne serie:

• Sådan installeres Nginx på CentOS 7 • Sikker Nginx med Let's Encrypt på CentOS 7 • Installer MariaDB på CentOS 7 • Installer PHP 7 på CentOS 7 • Sådan konfigureres Nginx-serverblokke på CentOS 7