Android

Osigurajte nginx s šifriranjem na ubuntu 16.04

Š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 dati korak po korak upute kako osigurati svoj Nginx programom Šifrirajmo pomoću alata certbot na Ubuntu 16.04.

Preduvjeti

Prije nastavka s ovim vodičem provjerite jeste li ispunili sljedeće preduvjete:

  • Ime domene pokazuje na IP vašeg javnog poslužitelja. U ovom ćemo udžbeniku koristiti example.com . Imate instaliran Nginx slijedeći Kako instalirati Nginx na Ubuntu 16.04.

Instalirajte Certbot

Certbot je uslužni program napisan u pythonu koji može automatizirati zadatke za dobivanje i obnavljanje Let's Encrypt SSL certifikata i konfiguriranje web poslužitelja.

Prvo instalirajte software-properties-common paket koji pruža alat add-apt-repository potreban za dodavanje dodatnih PPA-ova.

Ažurirajte indeks paketa i instalirajte software-properties-common sa:

sudo apt update sudo apt install software-properties-common

Nakon što je instalacija dovršena, dodajte certbot PPA skladište u svoj sustav pomoću sljedeće naredbe:

sudo add-apt-repository ppa:certbot/certbot

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. Stvorite novi set 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.

Da bismo to pojednostavili, /var/lib/letsencrypt ć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 koja ćemo uključiti u sve naše blok datoteke Nginx poslužitelja.

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

Gornji isječak uključuje preporuku čipsa tvrtke Mozilla, omogućava OCSP spajanje, HTTP strogu sigurnost transporta (HSTS) i primjenjuje nekoliko HTTP zaglavlja usmjerenih na sigurnost.

Nakon izrade isječaka otvorite blok poslužitelja domene i uključite isječak letsencrypt.conf kao što je prikazano u nastavku:

/etc/nginx/sites-available/example.com.conf

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

Aktivirajte blok poslužitelja stvaranjem simboličke veze s sites-available na sites-enabled :

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

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

sudo systemctl reload nginx

Pokrenite certbot skriptu s webroot dodatkom i pribavite datoteke SSL certifikata:

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, certbot će ispisati sljedeću poruku:

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:

Sada kada imamo datoteke certifikata, uredite blok poslužitelja domene na sljedeći način:

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

S gornjom konfiguracijom forsiramo HTTPS i preusmjeravamo www verziju domene na verziju koja non www .

Učitajte ponovo Nginx uslugu da bi promjene stupile na snagu:

sudo systemctl reload nginx

Automatska obnova SSL certifikata

Neka šifriraju potvrde vrijede 90 dana. Da bi automatski obnavljao certifikate prije njihovog isteka, certbot paket stvara cronjob koji će se izvoditi dva puta dnevno i automatski će obnoviti bilo koji certifikat 30 dana prije njegovog isteka.

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

/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"

Za testiranje postupka obnove upotrijebite prekidač certbot --dry-run sušenjem:

sudo certbot renew --dry-run

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

Zaključak

U ovom su udruženju koristili klijent Let's Encrypt, certbot da biste dobili SSL certifikate za svoju 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 ubuntu šifrirajmo certbot ssl