Úvod
Každý web, který chce přilákat návštěvníky, musí pro svou doménu zahrnovat šifrování SSL/TLS. Certifikáty SSL/TLS zajišťují bezpečné spojení mezi vaším webovým serverem a prohlížeči.
Let’s Encrypt je bezplatná certifikační autorita, která vám umožňuje takovou ochranu nastavit. Je to nejjednodušší způsob, jak zabezpečit server Nginx.
V tomto článku najdete nejjednodušší způsob, jak zabezpečit server Nginx získáním certifikátů Let’s Encrypt pomocí softwaru Certbot.
Předpoklady
- Systém se systémem Ubuntu 20.04 (nebo Ubuntu 18.04)
- Přístup k oknu terminálu/příkazovému řádku
- Sudo nebo root oprávnění na místních/vzdálených počítačích
- Nginx nainstalován a nastaven
- Název registrované domény
- Blok serveru nakonfigurovaný pro tento název domény
Jak zabezpečit Nginx pomocí Let's Encrypt na Ubuntu 20.04
Krok 1:Nainstalujte Certbot
Certbot je softwarový nástroj s otevřeným zdrojovým kódem pro automatické povolení HTTPS pomocí certifikátů Let’s Encrypt.
Prvním krokem k zabezpečení Nginx pomocí Let’s Encrypt je instalace Certbota. Chcete-li to provést, začněte otevřením okna terminálu a aktualizací místního úložiště:
sudo apt update
Poté si stáhněte a nainstalujte Certbot a jeho plugin Nginx spuštěním:
sudo apt install certbot python3-certbot-nginx
Zadejte y
potvrďte instalaci a stiskněte Enter.
Krok 2:Zkontrolujte konfiguraci Nginx
Jak je uvedeno v předpokladech, měli byste již mít registrovanou doménu a blok serveru Nginx pro tuto doménu. Jako příklad je v tomto článku použita doména example.com .
Chcete-li zkontrolovat, zda je nastaven správně, otevřete konfigurační soubor Nginx:
sudo nano /etc/nginx/sites-available/example.com
Poté vyhledejte server_name
a ujistěte se, že je nastaven na název vaší domény. Jak chcete zahrnout název domény s a bez www. prefix, řádek by měl vypadat podobně jako ten níže:
server_name example.com www.example.com;
Krok 3:Upravte bránu firewall tak, aby povolovala provoz HTTPS
Dalším krokem je úprava brány firewall tak, aby umožňovala provoz HTTPS.
Pokud jste postupovali podle instalační příručky Nginx, již jste povolili firewall tak, aby umožňoval Nginx HTTP. Při přidávání certifikátů Let’s Encrypt musíte nakonfigurovat bránu firewall pro šifrovaný provoz.
1. Abyste se ujistili, že je váš firewall aktivní a umožňuje přenos HTTPS, spusťte příkaz:
sudo ufw status
Výstup by vám měl sdělit, že UFW je aktivní, a měl by vám poskytnout seznam nastavených pravidel. V následujícím příkladu ukazuje, že firewall povoluje Nginx HTTP provoz, ale ne HTTPS.
Nginx má tři (3) profily, které můžete přidat jako pravidla:
- Nginx HTTP (otevře port 80)
- Nginx HTTPS (otevře port 443 – šifrovaný provoz)
- Nginx Full (otevře port 80 a 443)
2. Chcete-li povolit šifrovaný provoz, můžete přidat Nginx HTTPS profilu nebo použijte Nginx Full a odstraňte stávající pravidlo HTTP Nginx:
a) Povolte provoz Nginx HTTPS spuštěním příkazu:
sudo ufw allow 'Nginx HTTPS'
b) Odeberte Nginx HTTP a místo toho použijte Nginx Full s:
sudo ufw deny 'Nginx HTTP'
sudo ufw allow 'Nginx Full'
3. Pomocí ufw status
ověřte, že jste přidali pravidlo, které povoluje provoz HTTPS příkaz.
Krok 4:Získejte certifikát SSL/TLS
Plugin Nginx pro Certbot překonfiguruje Nginx a v případě potřeby znovu načte jeho konfiguraci. Jediné, co tedy musíte udělat, je vygenerovat certifikáty pomocí zásuvného modulu NGINX.
1. Chcete-li to provést, spusťte příkaz:
sudo certbot --nginx -d example.com -d www.example.com
2. Výstup vás požádá o konfiguraci nastavení HTTPS. Chcete-li pokračovat, zadejte svou e-mailovou adresu a odsouhlaste podmínky služby.
3. Jakmile nakonfigurujete HTTPS, Certbot dokončí generování certifikátu a znovu načte Nginx s novým nastavením.
4. Nakonec výstup zobrazí, že jste úspěšně vygenerovali certifikát, a specifikuje umístění certifikátu na vašem serveru.
Krok 5:Povolte automatické obnovení certifikátu
Vzhledem k tomu, že platnost certifikátů Let’s Encrypt vyprší každých 90 dní, Nginx doporučuje nastavit a automaticky obnovit úlohu cron.
1. Nejprve otevřete konfigurační soubor crontab pro aktuálního uživatele:
crontab -e
2. Přidejte úlohu cron, která spouští certbot
příkaz, který obnoví certifikát, pokud zjistí, že platnost certifikátu vyprší do 30 dnů. Naplánujte jej tak, aby se spouštěl denně v určený čas (v tomto příkladu tak činí v 05:00):
0 5 * * * /usr/bin/certbot renew --quiet
Úloha cron by také měla obsahovat --quiet
atribut, jako v příkazu výše. To instruuje certbot, aby po provedení úlohy nezahrnul žádný výstup.
3. Jakmile přidáte úlohu cron, uložte změny a ukončete soubor.