Android

Zabezpečte nginx pomocí šifrování na linuxu Debian 10

How to install Apache webserver | in linux

How to install Apache webserver | in linux

Obsah:

Anonim

Let's Encrypt je bezplatná, automatizovaná a otevřená certifikační autorita vyvinutá společností Internet Security Research Group (ISRG), která poskytuje bezplatné certifikáty SSL.

Certifikáty vydané Let's Encrypt jsou důvěryhodné ve všech hlavních prohlížečích a jsou platné 90 dní od data vydání.

Tento tutoriál ukazuje, jak nainstalovat zdarma Pojďme šifrovat SSL certifikát na Debian 10, Busteru, který používá Nginx jako webový server. Ukážeme také, jak nakonfigurovat Nginx tak, aby používal certifikát SSL a povolil HTTP / 2.

Předpoklady

Před pokračováním v této příručce se ujistěte, že jsou splněny následující předpoklady:

  • Přihlášen jako root nebo uživatel s právy sudo. Doména, pro kterou chcete získat certifikát SSL, musí ukazovat na IP vašeho veřejného serveru. Použijeme nainstalovaný server example.com .Nginx.

Instalace certifikátu

K získání a obnovení certifikátů použijeme nástroj certbot.

Certbot je plně vybavený a snadno použitelný nástroj, který automatizuje úkoly pro získávání a obnovu Let's Encrypt SSL SSL a konfiguraci webových serverů pro použití certifikátů.

Balíček certbot je obsažen ve výchozích úložištích Debianu. Chcete-li nainstalovat certbot, spusťte následující příkazy:

sudo apt update sudo apt install certbot

Vytváření skupiny Dh (Diffie-Hellman)

Výměna klíčů Diffie – Hellman (DH) je metoda bezpečné výměny kryptografických klíčů přes nezajištěný komunikační kanál.

Budeme generovat novou sadu 2048 bitů DH parametrů pro posílení bezpečnosti:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Můžete také změnit velikost až 4096 bitů, ale generování může trvat déle než 30 minut v závislosti na entropii systému.

Získání šifrovaného certifikátu SSL

K získání certifikátu SSL pro doménu použijeme plugin Webroot. Funguje tak, že vytvoří dočasný soubor pro ověření požadované domény ve ${webroot-path}/.well-known/acme-challenge adresáři ${webroot-path}/.well-known/acme-challenge . Server Pojďme šifrovat provede požadavky HTTP na dočasný soubor, aby ověřil, že se požadovaná doména převede na server, na kterém je spuštěn certbot.

Chystáme se mapovat všechny požadavky HTTP na .well-known/acme-challenge do jednoho adresáře /var/lib/letsencrypt .

Spusťte následující příkazy, abyste vytvořili adresář a zajistili jeho zápis na server Nginx:

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

Abychom se vyhnuli duplikování kódu, vytvoříme dva úryvky, které budou zahrnuty do všech souborů blokových serverů Nginx.

Otevřete textový editor a vytvořte první úryvek, 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; }

Druhý úryvek ssl.conf zahrnuje ssl.conf doporučené Mozillou, umožňuje OCSP sešívání, HTTP Strict Transport Security (HSTS) a vynucuje několik záhlaví HTTP zaměřených na zabezpečení.

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

Po dokončení otevřete soubor bloku serveru domény a letsencrypt.conf útržek letsencrypt.conf jak je uvedeno níže:

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

Vytvořte symbolický odkaz na adresář s sites-enabled povolte blok serveru domény:

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

Restartujte službu Nginx, aby se změny projevily:

sudo systemctl restart nginx

Nyní jste připraveni získat soubory certifikátů SSL spuštěním následujícího příkazu:

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

Pokud je certifikát SSL úspěšně získán, na vašem terminálu bude vytištěna následující zpráva:

IMPORTANT NOTES: 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-02-22. 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:

Upravte blok serveru domény a připojte soubory certifikátů SSL následujícím způsobem:

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 }

Výše uvedená konfigurace říká Nginxu, aby přesměroval z HTTP na HTTPS a z www na non-www verzi.

Restartujte nebo znovu načtěte službu Nginx, aby se změny projevily:

sudo systemctl restart nginx

Otevřete web pomocí https:// a všimnete si zelené ikony zámku.

Automatické obnovení Pojďme šifrovat SSL certifikát

Certifikáty šifrování jsou platné 90 dní. Chcete-li automaticky obnovit certifikáty před vypršením jejich platnosti, vytvoří balíček certbot cronjob, který se spouští dvakrát denně a automaticky obnovuje jakýkoli certifikát 30 dní před jeho vypršením.

Při obnovení musí být služba nginx znovu načtena, aby server mohl načíst certifikát. Připojte --renew-hook "systemctl reload nginx" do souboru /etc/cron.d/certbot tak, jak vypadá takto:

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"

Otestujte proces automatické obnovy spuštěním tohoto příkazu:

sudo certbot renew --dry-run

Pokud neexistují žádné chyby, znamená to, že proces obnovy byl úspěšný.

Závěr

V dnešní době je nutné mít certifikát SSL. Zabezpečuje váš web, zvyšuje pozici SERP a umožňuje vám povolit HTTP / 2 na vašem webovém serveru.

V tomto tutoriálu jsme vám ukázali, jak generovat a obnovit certifikáty SSL pomocí skriptu certbot. Také jsme vám ukázali, jak nakonfigurovat Nginx pro použití certifikátů.

Další informace o Certbot naleznete v dokumentaci k Certbot.

nginx debian pojďme zašifrovat certbot ssl