Android

Zabezpečte nginx pomocí šifrování na centech 8

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

V tomto tutoriálu vám krok za krokem poskytneme pokyny, jak nainstalovat bezplatný certifikát šifrování SSL na CentOS 8, na kterém běží Nginx jako webový server. Ukážeme také, jak nakonfigurovat Nginx tak, aby používal certifikát SSL a povolil HTTP / 2.

Předpoklady

Než budete pokračovat, ujistěte se, že jste splnili následující předpoklady:

  • Máte doménové jméno ukazující na vaši veřejnou IP. Použijeme example.com .Nainstalovali jste na svém serveru CentOS Nginx. Váš firewall je nakonfigurován tak, aby přijímal připojení na portech 80 a 443.

Instalace certifikátu

Certbot je bezplatný nástroj příkazového řádku, který zjednodušuje proces získávání a obnovování šifrování SSL certifikátů z HTTPS na vašem serveru a automatické povolení

Balíček certbot není součástí standardních repozitářů CentOS 8, ale lze jej stáhnout z webových stránek dodavatele.

Spusťte následující příkaz wget jako uživatel root nebo sudo a stáhněte si skript certbot do /usr/local/bin :

sudo wget -P /usr/local/bin

Po dokončení stahování vytvořte soubor spustitelným:

sudo chmod +x /usr/local/bin/certbot-auto

Vytváří 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.

Vygenerujte novou sadu 2048 bitových DH parametrů zadáním následujícího příkazu:

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

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

Abychom získali certifikát SSL pro doménu, použijeme plugin Webroot, který funguje vytvořením dočasného souboru pro ověření požadované domény ve složce ${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.

Aby to bylo jednodušší, budeme 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.

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

Chcete-li se vyhnout duplicitě kódu, vytvořte následující dva úryvky, které budou zahrnuty do všech souborů bloků serveru Nginx:

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:10m; 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;

Úryvek výše zahrnuje chippery 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í.

Po vytvoření úryvků otevřete blok serveru domény a letsencrypt.conf útržek letsencrypt.conf , jak je uvedeno níže:

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

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

Znovu načtěte konfiguraci Nginx, aby se změny projevily:

sudo systemctl reload nginx

Spusťte nástroj certbot s pluginem webroot a získejte soubory certifikátů SSL pro vaši doménu:

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

Pokud poprvé spustíte certbot , nainstaluje nástroj chybějící závislosti.

Po úspěšném získání certifikátu SSL vytiskne certbot následující zprávu:

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-03-12. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

Nyní, když máte soubory certifikátů, můžete upravit blok serveru domény následujícím způsobem:

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

S výše uvedenou konfigurací nutíme HTTPS a přesměrujeme www na jinou než www verzi.

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

sudo systemctl reload nginx

Nyní 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řte cronjob, který bude spuštěn dvakrát denně a automaticky obnovte jakýkoli certifikát 30 dní před vypršením platnosti.

Pomocí příkazu crontab vytvořte nový cronjob:

sudo crontab -e

Vložte následující řádek:

0 */12 * * * root test -x /usr/local/bin/certbot-auto -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && /usr/local/bin/certbot-auto -q renew --renew-hook "systemctl reload nginx"

Uložte a zavřete soubor.

Chcete-li otestovat proces obnovy, můžete použít příkaz certbot následovaný přepínačem --dry-run :

sudo certbot renew --dry-run

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

Závěr

V tomto tutoriálu jsme vám ukázali, jak používat klienta Let's Encrypt, certbot ke stažení certifikátů SSL pro vaši doménu. Také jsme vytvořili úryvky Nginx, abychom se vyhnuli duplikování kódu, a nakonfigurovali jsme Nginx, aby používal certifikáty. Na konci tutoriálu jsme nastavili cronjob pro automatické obnovení certifikátu.

Další informace o společnosti Certbot naleznete na stránce dokumentace.

nginx centos zašifrujme certbot ssl