Android

Zabezpečte nginx pomocí šifrování Debianu 9

How to install Apache webserver | in linux

How to install Apache webserver | in linux

Obsah:

Anonim

Let's Encrypt je bezplatná a otevřená certifikační autorita vyvinutá společností Internet Security Research Group (ISRG). Certifikáty vydané Let's Encrypt jsou dnes důvěryhodné téměř všemi prohlížeči.

V tomto tutoriálu si vysvětlíme, jak používat nástroj Certbot k získání bezplatného certifikátu SSL pro Nginx na Debianu 9. 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 tomto kurzu se ujistěte, že jsou splněny následující předpoklady:

  • Přihlášen jako uživatel s právy sudo. Název domény ukazující na IP vašeho veřejného serveru. Použijeme example.com Nainstalovali jsme Nginx podle těchto pokynů. Máte blok serveru pro vaši doménu. Postupujte podle těchto pokynů, kde najdete podrobnosti o tom, jak jej vytvořit.

Nainstalujte Certbot

Certbot je plně vybavený a snadno použitelný nástroj, který může automatizovat ú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.

Aktualizujte seznam balíčků a nainstalujte balíček certbot:

sudo apt update sudo apt install certbot

Vytvořte silnou skupinu 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 Pokud chcete, můžete změnit velikost až na 4096 bitů, ale v tomto případě může generování 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 naši doménu použijeme plugin Webroot, který funguje vytvořením dočasného souboru pro ověření požadované domény v 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 .

Následující příkazy vytvoří adresář a učiní jej zapisovatelným pro server Nginx.

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

Chcete-li se vyhnout duplikování kódu, vytvořte následující dva úryvky, které budou zahrnuty do všech našich blokových souborů serveru 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; }

Vytvořte druhý úryvek ssl.conf který obsahuje 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 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;

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

Nový blok serveru povolte vytvořením symbolického odkazu na adresář s sites-enabled :

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í můžete spustit Certbot pomocí webroot pluginu a získat soubory certifikátů SSL vydáním:

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

Dále upravte blok serveru domény 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 }

S výše uvedenou konfigurací nutíme HTTPS a přesměrujeme z www na non-www verzi.

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

sudo systemctl reload nginx

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.

Protože po obnovení certifikátu používáme plug-in webového kořenového modulu certbot, musíme službu nginx znovu načíst. 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 jste použili klienta Let's Encrypt, certbot ke generování certifikátů SSL pro vaši doménu. Vytvořili jste také úryvky Nginx, abyste zabránili duplikování kódu, a nakonfigurovali jste Nginx, aby používal certifikáty. Na konci tutoriálu jste nastavili cronjob pro automatické obnovení certifikátu.

nginx debian pojďme zašifrovat certbot ssl

Tento příspěvek je součástí Jak nainstalovat LEMP Stack na sérii Debian 9.

Další příspěvky v této sérii:

• Jak nainstalovat MariaDB na Ubuntu 18.04 • Jak nainstalovat Nginx na Debian 9 • Jak nainstalovat PHP na Debian 9 • Jak nastavit serverové bloky Nginx na Debian 9 • Zabezpečit Nginx pomocí šifrování na Debianu 9