Přehled
V následujícím příspěvku se budeme zabývat postupem, jak zabezpečit Nginx pomocí Let's Encrypt SSL na počítači Debian 10 (Tento postup lze použít i na Debian 11). Příspěvek představí scénář, kdy potřebujeme nainstalovat certbota na náš stroj Debian a získat certifikát SSL od Let’s Encrypt, nastavit automatické přesměrování HTTPS a také vyzkoušet obnovu certifikátu. Zde již máme stroj Debian s předinstalovaným Nginxem, na kterém projdeme kroky, jak zabezpečit nginx pomocí let's encrypt ssl.
Požadavky
1.. Registrujte a platný název domény směřující na váš server Debian.
2.. Server Debian 10 (nebo server Debian 11)
3.. Nainstalovaný a spuštěný webový server Nginx
4.. Konfigurace brány firewall (otevřené porty HTTP a HTTPS)
Pokud máte firewall UFW nebo IPTABLES, musíte je nakonfigurovat tak, aby otevíraly porty 80 a 443 pro HTTP a HTTPS, abyste mohli nejen hostovat váš web
UFW
sudo ufw allow http sudo ufw allow https
IPTABLES
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT or sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Instalace Certbota
K získání certifikátu SSL a pluginu Nginx pro certbota použijeme nástroj Let's Encrypt Cerbot. Oba nástroje nám pomohou velmi snadno, rychle získat certifikát a také provést potřebné konfigurační změny na Nginx. Kromě toho mají nástroje funkce automatizace, takže po vypršení platnosti SSL mohou certifikát obnovit a nainstalovat znovu.
sudo apt install certbot python3-certbot-nginx
Získejte certifikát SSL od Let’s Encrypt
Jakmile potvrdíte, že jsou otevřeny porty na firewallu a dokončíte instalaci certbota. K získání certifikátu SSL z Let’s encrypt stačí spustit příkaz:
sudo certbot --nginx -d yourdomain.com
Jedna poznámka – před spuštěním příkazu je nejprve potřeba do konfiguračního souboru nginx napsat do parametru server_name skutečný název domény, na který jste poukázali na váš server. Certbot se podívá na tento parametr v konfiguraci bloku vašeho serveru a podle tohoto parametru vytvoří konfigurační soubory let's encrypt. Příklad na obrázku níže:
sudo nano /etc/nginx/sites-available/example.com
Když spustíte tento příkaz, spustí se průvodce certbotem. Pokud spouštíte cerbot poprvé, nejprve vás požádá o poskytnutí e-mailové adresy, kterou chcete použít jako kontakt, a o souhlas s licenčními podmínkami Let’s encrypt.
Poté spustí http výzvu, získá certifikát a na konci se vás zeptá, zda chcete, aby hned nakonfiguroval přesměrování https, což je také dobrá volba.
Jakmile je konfigurace přesměrování dokončena, měla by nová doména s SSL certifikátem ihned fungovat.
Nastavte a otestujte automatické obnovení
Certifikáty Let’s encrypt jsou ve výchozím nastavení platné tři měsíce a automatická obnova cerbota je nakonfigurována tak, aby obnovila certifikát alespoň jednou, když má certifikát méně než 30 dní. Jakmile je certifikát SSL získán, platný a aktivní, zdvojnásobte jej, pokud je aktivní a běží služba časovače certbota, a otestujte proces obnovy pomocí možnosti suchého spuštění:
sudo systemctl status certbot.timer
sudo certbot renew --dry-run
Zkontrolujte konfiguraci Nginx
Můžete dvakrát zkontrolovat konfiguraci nginx, pokud cerbot úspěšně zapsal konfiguraci pro certifikáty ssl a pro přesměrování HTTPS. Cerbot restartuje nginx, jakmile skončí s konfigurací, měli byste mít svou doménu/web zabezpečenou a spuštěnou s aktivním SSL.
Shrnutí
Abychom to shrnuli, prošli jsme kroky, jak zabezpečit Nginx pomocí Let’s Encrypt SSL na stroji Debian 10 a také na stroji Debian 11. Pro žádosti o certifikát SSL jsme použili nástroj let’s encrypt’s certbot a je to automatická obnova. Naštěstí pro certbot a jeho plugin nginx je proces opravdu jednoduchý a přímočarý a rychle se dokončí. Jedním z návrhů je – bylo by dobrou možností mít zálohu složky let’s encrypt a nechat ji často zálohovat (jak sám certbot navrhl). To je samozřejmě volitelné a záleží na tom, jak máte nastavenou frekvenci obnovování certifikátu.
Službu Pojďme šifrovat, i když je bezplatná a mezi technickým světem velmi oblíbená, je to dobrá volba pro zabezpečení některých typů webových stránek. Jejich bezplatné certifikáty se však nedoporučují používat na webových stránkách elektronického obchodu pro příklad nebo jakýkoli typ webu, který potřebuje předávat a ukládat velmi citlivá data (kreditní karty a podobně). Proto se ve výchozím nastavení doporučuje mít pro SSL certifikáty krátkou dobu obnovy. Na tuto poznámku, Let’s encrypt není jedinou bezplatnou možností, kterou lze použít. Cloudflare má stejnou možnost poskytovat bezplatné SSL a lze jej použít také k zabezpečení vašeho webu Nginx. Pokud vás tato možnost zaujala, můžete se podívat na příspěvek na tomto odkazu.