Android

Osigurajte nginx s šifriranjem na debianu 9

Šalu na stranu, osigurajte se na vrijeme!

Šalu na stranu, osigurajte se na vrijeme!

Sadržaj:

Anonim

Let's Encrypt je besplatno i otvoreno tijelo certifikata koje je razvila Internet Security Research Group (ISRG). Certifikati izdani Let's Encrypt vjeruju danas gotovo svim preglednicima.

U ovom ćemo vodiču objasniti kako koristiti alat Certbot za dobivanje besplatnog SSL certifikata za Nginx na Debianu 9. Također ćemo pokazati kako konfigurirati Nginx za korištenje SSL certifikata i omogućiti HTTP / 2.

Preduvjeti

Prije nastavka s ovim vodičem osigurajte da su ispunjeni sljedeći preduvjeti:

  • Prijavljeni ste kao korisnik s privilegijama sudo.Naziv domene upućuje na IP vašeg javnog poslužitelja. Koristit ćemo example.com . Instalirajte Nginx slijedeći ove upute Imate blok poslužitelja za vašu domenu. Možete slijediti ove upute za detalje o tome kako ih stvoriti.

Instalirajte Certbot

Certbot je potpuno opremljen i jednostavan za korištenje alat koji može automatizirati zadatke za dobivanje i obnavljanje Let's Šifriraj SSL certifikate i konfiguriranje web poslužitelja za korištenje certifikata. Paket certbot uključen je u zadane spremišta Debiana.

Ažurirajte popis paketa i instalirajte certbot paket:

sudo apt update sudo apt install certbot

Stvaranje snažne Dh (Diffie-Hellman) grupe

Razmjena ključeva Diffie-Hellman (DH) metoda je sigurne razmjene kriptografskih ključeva preko nezaštićenog komunikacijskog kanala. Generirat ćemo novi skup 2048 bitnih DH parametara za jačanje sigurnosti:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Ako želite, možete promijeniti veličinu do 4096 bita, ali u tom slučaju generacija može potrajati više od 30 minuta, ovisno o entropiji sustava.

Dobivanje šifriramo SSL certifikat Let's Šifriraj

Za dobivanje SSL certifikata za našu domenu koristit ćemo Webroot dodatak koji djeluje stvaranjem privremene datoteke za provjeru tražene domene u ${webroot-path}/.well-known/acme-challenge direktoriju ${webroot-path}/.well-known/acme-challenge . Poslužitelj Let's Encrypt postavlja HTTP zahtjeve u privremenu datoteku kako bi potvrdio da se zatražena domena rješava na poslužitelju na kojem se pokreće certbot.

Mapirat ćemo sve HTTP zahtjeve za .well-known/acme-challenge u jedan direktorij, /var/lib/letsencrypt .

Sljedeće naredbe stvorit će direktorij i učiniti ga zapisljivim za Nginx poslužitelj.

mkdir -p /var/lib/letsencrypt/.well-known chgrp www-data /var/lib/letsencrypt chmod g+s /var/lib/letsencrypt

Da biste izbjegli dupliciranje koda, stvorite sljedeća dva isječka koji će biti uključeni u sve naše blok datoteke Nginx poslužitelja.

Otvorite uređivač teksta i stvorite prvi isječak, 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; }

Izradite drugi isječak ssl.conf koji uključuje ssl.conf koje je preporučio Mozilla, omogućava OCSP Stapanje, HTTP strogu sigurnost u prometu (HSTS) i nameće nekoliko HTTP zaglavlja usmjerenih na sigurnost.

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

Nakon završetka, otvorite datoteku bloka poslužitelja domene i uključite isječak letsencrypt.conf kao što je prikazano u nastavku:

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

Omogućite novi blok poslužitelja stvaranjem simboličke veze na direktorij koji sites-enabled :

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Ponovno pokrenite Nginx uslugu da bi promjene stupile na snagu:

sudo systemctl restart nginx

Sada možete pokrenuti Certbot s dodatkom webroot i dobiti datoteke SSL certifikata izdavanjem:

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

Ako je SSL certifikat uspješno dobiven, na vašem terminalu će se ispisati sljedeća poruka:

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-07-28. 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" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

Zatim uredite blok poslužitelja domene na sljedeći način:

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 }

S gornjom konfiguracijom forsiramo HTTPS i preusmjeravamo s www na verziju koja nije www.

Ponovo učitajte Nginx uslugu da bi promjene stupile na snagu:

sudo systemctl reload nginx

Automatska obnova Let's Šifriraj SSL certifikat

Neka šifriraju potvrde vrijede 90 dana. Za automatsko obnavljanje certifikata prije njihovog isteka, certbot paket stvara cronjob koji se izvodi dva puta dnevno i automatski obnavlja bilo koji certifikat 30 dana prije njegovog isteka.

Budući da koristimo dodatak certbot webroot nakon obnavljanja certifikata, moramo ponovno učitati nginx uslugu. Dodajte --renew-hook "systemctl reload nginx" u /etc/cron.d/certbot datoteku tako da izgleda ovako:

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"

Testirajte postupak automatske obnove pokretanjem ove naredbe:

sudo certbot renew --dry-run

Ako nema pogrešaka, to znači da je proces obnove bio uspješan.

Zaključak

Imati SSL certifikat danas je nužno. To osigurava vašu web stranicu, povećava poziciju SERP-a i omogućava vam HTTP / 2 na vašem web poslužitelju.

U ovom su vodiču koristili klijent Let's Encrypt, certbot za generiranje SSL certifikata za vašu domenu. Također ste stvorili isječke Nginx-a kako biste izbjegli dupliciranje koda i konfigurirali Nginx za korištenje certifikata. Na kraju udžbenika postavili ste posao za automatsku obnovu certifikata.

nginx debian šifrirajmo certbot ssl

Ovaj je post dio Kako instalirati LEMP stack na Debian 9 seriji.

Ostali postovi u ovoj seriji:

• Kako instalirati MariaDB na Ubuntu 18.04 • Kako instalirati Nginx na Debian 9 • Kako instalirati PHP na Debian 9 • Kako postaviti blokove poslužitelja Nginx na Debian 9 • Osigurajte Nginx s Šifrirajmo na Debianu 9