Android

Sikre nginx med la oss kryptere på centos 7

Настройка HTTPS на Synology NAS с помощью Let's Encrypt | Synology

Настройка HTTPS на Synology NAS с помощью Let's Encrypt | Synology

Innholdsfortegnelse:

Anonim

Let's Encrypt er en gratis og åpen sertifikatmyndighet utviklet av Internet Security Research Group (ISRG). Sertifikater utstedt av Let's Encrypt er klarert av nesten alle nettlesere i dag.

I denne opplæringen gir vi trinnvise instruksjoner om hvordan du sikrer din Nginx med Let's Encrypt ved å bruke certbot-verktøyet på CentOS 7.

Forutsetninger

Forsikre deg om at du har oppfylt følgende forutsetninger før du fortsetter med denne opplæringen:

  • Du har et domenenavn som peker til din offentlige server-IP. I denne opplæringen vil vi bruke example.com Du har aktivert EPEL-depot og installert Nginx ved å følge Hvordan installere Nginx på CentOS 7.

Installer Certbot

Certbot er et brukervennlig verktøy som kan automatisere oppgavene for å skaffe og fornye Let's Encrypt SSL-sertifikater og konfigurere webservere.

Slik installerer du certbot-pakken fra EPEL-depotkjøringen:

sudo yum install certbot

Generer Strong Dh (Diffie-Hellman) -gruppen

Diffie – Hellman nøkkelutveksling (DH) er en metode for sikker utveksling av kryptografiske nøkler over en usikret kommunikasjonskanal.

Generer et nytt sett med 2048 bit DH-parametere ved å skrive inn følgende kommando:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Hvis du vil, kan du endre størrelsen opp til 4096 biter, men i så fall kan generasjonen ta mer enn 30 minutter avhengig av systemets entropi.

Innhenting av et Let's Encrypt SSL-sertifikat

For å få et SSL-sertifikat for domenet vårt, bruker vi Webroot-plugin som fungerer ved å lage en midlertidig fil for å validere det forespurte domenet i ${webroot-path}/.well-known/acme-challenge katalogen. Let's Encrypt-serveren sender HTTP-forespørsler til den midlertidige filen for å bekrefte at det forespurte domenet løses til serveren der certbot kjører.

For å gjøre det enklere skal vi kartlegge alle HTTP-forespørsler for .well-known/acme-challenge til en enkelt katalog, /var/lib/letsencrypt .

Følgende kommandoer lager katalogen og gjør den skrivbar for Nginx-serveren.

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

For å unngå duplisering av kode oppretter du følgende to utdrag som vi skal inkludere i alle Nginx-serverblokkfilene:

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;

Utdraget over inkluderer flishuggerne som er anbefalt av Mozilla, aktiverer OCSP-stifting, HTTP Strict Transport Security (HSTS) og håndhever få sikkerhetsfokuserte

Når kodebitene er opprettet, åpner du domeneserverblokken og inkluderer letsencrypt.conf utdraget som vist nedenfor:

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

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

Last inn Nginx-konfigurasjonen på nytt for at endringene skal tre i kraft:

sudo systemctl reload nginx

Du kan nå kjøre Certbot med webroot-plugin og skaffe SSL-sertifikatfilene for domenet ditt ved å utstede:

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

Hvis SSL-sertifikatet er oppnådd, skriver certbot ut følgende melding:

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:

Nå som du har sertifikatfilene, kan du redigere domeneserverblokken din 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 konfigurasjonen over tvinger vi HTTPS og omdirigerer www til non www versjonen.

Til slutt, last inn Nginx-tjenesten på nytt for at endringene skal tre i kraft:

sudo systemctl reload nginx

Forny automatisk Let's Encrypt SSL-sertifikat

Let's Encrypts sertifikater er gyldige i 90 dager. For automatisk å fornye sertifikatene før de utløper, oppretter vi en cronjob som kjøres to ganger om dagen og vil automatisk fornye ethvert sertifikat 30 dager før utløpet.

Kjør crontab kommandoen for å lage en ny cronjob:

sudo crontab -e

Lim inn 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"

Lagre og lukk filen.

For å teste fornyelsesprosessen kan du bruke certbot-kommandoen etterfulgt av - --dry-run bryteren:

sudo certbot renew --dry-run

Hvis det ikke er noen feil, betyr det at testfornyelsesprosessen var vellykket.

Konklusjon

I denne opplæringen brukte du Let's Encrypt-klienten, certbot til å laste ned SSL-sertifikater for domenet ditt. Du har også opprettet Nginx-utdrag for å unngå duplisering av kode og konfigurert Nginx til å bruke sertifikatene. På slutten av opplæringen har du satt opp en cronjob for automatisk fornyelse av sertifikater.

nginx centos la oss kryptere certbot ssl

Dette innlegget er en del av Install LEMP Stack på CentOS 7-serien.

Andre innlegg i denne serien:

• Hvordan installere Nginx på CentOS 7 • Sikker Nginx med Let's Encrypt på CentOS 7 • Installer MariaDB på CentOS 7 • Installer PHP 7 på CentOS 7 • Slik konfigurerer du Nginx-serverblokker på CentOS 7