V tomto článku vysvětlíme nezbytné kroky k zabezpečení Nginx pomocí let’s encrypt na Ubuntu 20.04 LTS. Než budete pokračovat v tomto tutoriálu, ujistěte se, že jste přihlášeni jako uživatel s sudo
privilegia. Všechny příkazy v tomto tutoriálu by měly být spouštěny jako uživatel bez oprávnění root.
Let’s Encrypt je bezplatná, automatizovaná a otevřená certifikační autorita vyvinutá organizací Internet Security Research Group (ISRG), která poskytuje bezplatné certifikáty SSL. Let’s Encrypt používá klientský software (certbot), který automatizuje proces vytváření certifikátů, ověřování, podepisování, implementaci a obnovování certifikátů.
Předpoklad:
- Operační systém s Ubuntu 20.04
- Adresa IPv4 serveru s oprávněními superuživatele (přístup root)
- Gnome Terminal pro Linux Desktop
- Klient PuTTy SSH pro Windows nebo macOS
- Powershell pro Windows 10/11
- Znáte příkazy APT
Zabezpečte Nginx pomocí Let’s Encrypt na Ubuntu 20.04
Krok 1. Nejprve, než začnete instalovat jakýkoli balíček na váš server Ubuntu, vždy doporučujeme zajistit, aby byly všechny systémové balíčky aktualizovány.
sudo apt update sudo apt upgrade
Poznámka:Před instalací by měla být doména Let’s Encrypt SSL dobře přístupná a měla by používat virtuální hostitele Nginx. Přečtěte si návod, jak nainstalovat Nginx na Ubuntu.
Krok 2. Nainstalujte Certbot.
Certbot je plně vybavený a snadno použitelný nástroj, který automatizuje úlohy získávání a obnovování certifikátů Let's Encrypt SSL a konfiguraci webových serverů pro použití certifikátů . Chcete-li jej nainstalovat, spusťte následující příkazy:
sudo apt install certbot
Poté vygenerujte novou sadu 2048bitových parametrů DH zadáním následujícího příkazu:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Server Let’s Encrypt odesílá požadavky HTTP na dočasný soubor, aby ověřil, že se požadovaná doména překládá na server, na kterém běží certbot. Aby to bylo jednodušší, namapujeme všechny požadavky HTTP pro .well-known/acme-challenge
do jednoho adresáře, /var/lib/letsencrypt
:
sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp www-data /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt
Potom vytvořte následující dva úryvky, které budou zahrnuty do všech souborů bloků serveru Nginx:
sudo nano /etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
Dále vytvořte druhý úryvek, ssl.conf:
sudo nano /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 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=31536000; includeSubDomains" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
Dále otevřete soubor bloku doménového serveru a zahrňte letsencrypt.conf:
sudo nano /etc/nginx/sites-available/example.com.conf
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Nezapomeňte ze souboru vytvořit symbolický odkaz na adresář s povolenými weby:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/ sudo systemctl restart nginx
Po dokončení spusťte Certbot s pluginem webroot a získejte soubory certifikátu SSL vydáním:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Nakonec upravte blok svého doménového serveru následovně:
sudo nano /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; }
Znovu načtěte službu Nginx, aby se změny projevily:
sudo systemctl reload nginx
Krok 3. Kontrola stavu certifikátu.
Můžete se ujistit, že Certbot vytvořil váš certifikát SSL správně, pomocí testu serveru SSL od společnosti Qualys pro zabezpečení cloudu. Otevřete následující odkaz ve svém preferovaném webovém prohlížeči a nahraďte your-domain.com
s vaší základní doménou:
https://www.ssllabs.com/ssltest/analyze.html?d=your-domain.com
Krok 4. Obnovte certifikát Let’s Encrypt SSL
A nakonec otestujte automatické obnovení:
sudo certbot renew --dry-run
To je vše, co potřebujete k instalaci SSL Let’s Encrypt with Nginx na Ubuntu 20.04 Focal Fossa. Doufám, že vám tento rychlý tip pomůže. Pokud máte dotazy nebo návrhy, neváhejte zanechat komentář níže.