2024-05-30 11:19 Doba čtení: 8 min
Linux +1

Jak zabezpečit Nginx s Let's Encrypt na Debian 11

Úvodní informace

Nginx představuje robustní a open-source řešení pro webový server, široce využívané pro hosting webových stránek a aplikací. Let's Encrypt je certifikační autorita, která poskytuje zdarma certifikáty TLS/SSL, umožňující webovým stránkám šifrovanou komunikaci prostřednictvím protokolu HTTPS.

Zabezpečení serveru Nginx s využitím certifikátů od Let's Encrypt přináší vyšší úroveň ochrany vašich webových stránek. Chrání data přenášená mezi serverem a klienty před neoprávněným odposlechem a manipulací. Používání HTTPS navíc posiluje důvěryhodnost vašeho webu a má pozitivní vliv na jeho pozici ve výsledcích vyhledávání.

V následujícím průvodci si krok za krokem ukážeme, jak zabezpečit server Nginx pomocí certifikátů Let's Encrypt na operačním systému Debian 11.

Instalace Nginx

Než se pustíme do konfigurace Let's Encrypt, je nutné mít na serveru nainstalovaný Nginx. Použijte následující příkazy:

sudo apt update
sudo apt install nginx

Instalace Certbot

Certbot je nástroj příkazové řádky, který usnadňuje získání a správu certifikátů od Let's Encrypt. Nainstalujte jej pomocí příkazu:

sudo apt install certbot

Generování certifikátu Let's Encrypt

Pro vygenerování certifikátu Let's Encrypt pro vaši doménu použijte následující příkaz:

sudo certbot --nginx

Budete vyzváni k zadání e-mailové adresy a potvrzení souhlasu s podmínkami služby. Certbot následně automaticky nakonfiguruje Nginx pro používání certifikátu.

Ověření domény

Před vydáním certifikátu je nutné ověřit vlastnictví dané domény. K ověření slouží několik metod:

  • Ověření pomocí HTTP: Vytvoření specifického souboru v adresáři .well-known/acme-challenge/ v kořenovém adresáři vašeho webu.
  • Ověření pomocí DNS: Vytvoření TXT záznamu v DNS zóně vaší domény.

Certbot automaticky vybere nejvhodnější metodu ověření.

Konfigurace Nginx pro HTTPS

Po úspěšném ověření domény Certbot automaticky upraví konfigurační soubor Nginx a aktivuje HTTPS. Konfigurační soubor se nachází v /etc/nginx/sites-available/default.

Pro další úpravy konfigurace otevřete soubor v textovém editoru a přidejte tyto řádky:

listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;

server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server; ssl_certificate /etc/letsencrypt/live/<domain_name>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domain_name>/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128-GCM-SHA256:EECDH+AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; img-src 'self' data:; media-src 'none'; connect-src 'self'; font-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval';";
}

Nezapomeňte nahradit <domain_name> skutečným názvem vaší domény.

Restartování Nginx

Po provedení všech změn restartujte Nginx pro aktivaci nové konfigurace:

sudo systemctl restart nginx

Ověření zabezpečení HTTPS

Ověřte, že vaše stránky používají HTTPS, tím, že je navštívíte ve webovém prohlížeči a zkontrolujete přítomnost ikonky zámku a protokolu HTTPS v adresním řádku.

Závěr

Zabezpečení Nginx pomocí Let's Encrypt je snadný a efektivní způsob, jak zvýšit bezpečnost vašich webových stránek, zlepšit jejich pozici ve vyhledávačích a posílit důvěru uživatelů. Postupem dle výše uvedených kroků můžete rychle a jednoduše nastavit Nginx pro používání šifrovaného připojení HTTPS.

Nezapomeňte pravidelně obnovovat certifikáty Let's Encrypt, aby zůstaly platné a vaše webové stránky byly chráněny. Certbot poskytuje automatizovaný skript pro obnovování certifikátů, který spustíte příkazem:

sudo certbot renew --dry-run

Často kladené otázky

1. Co je Let's Encrypt?
Let's Encrypt je bezplatná certifikační autorita, která poskytuje certifikáty TLS/SSL pro šifrování webové komunikace.

2. Jak získám certifikát Let's Encrypt?
Certifikát lze získat pomocí nástroje Certbot. Použijte příkaz sudo certbot --nginx pro získání a instalaci certifikátu pro Nginx.

3. Jak zjistím, zda můj web používá HTTPS?
Navštivte svůj web a ověřte přítomnost ikonky zámku a protokolu HTTPS v adresním řádku prohlížeče.

4. Jak často musím obnovovat certifikát Let's Encrypt?
Certifikáty Let's Encrypt jsou platné po dobu 90 dní. Doporučuje se provádět obnovu s dostatečným předstihem před vypršením platnosti.

5. Je možné zabezpečit více domén jedním certifikátem Let's Encrypt?
Ano, certifikát typu wildcard může zabezpečit více domén najednou.

6. Jak aktivuji HTTP/2 na Nginx?
Pro aktivaci HTTP/2 přidejte direktivu http2 do konfiguračního bloku listen v souboru nginx.conf.

7. Jak dále zvýšit zabezpečení mého Nginx serveru?
Kromě použití Let's Encrypt můžete zvýšit zabezpečení omezením přístupu, konfigurací firewallu a aktualizací softwaru.

8. Kde najdu pomoc s Nginx a Let's Encrypt?
Pro pomoc s Nginx a Let's Encrypt můžete použít dokumentaci k Nginx, dokumentaci k Let's Encrypt a online fóra.

Jan Novák
Autor
Czechia

Redaktor zaměřený na Windows, produktivitu a cloudové nástroje.

Předchozí článek
Jak odebrat znaky z řetězce v Pythonu
Další článek
Jak nainstalovat certifikát SSL od komerční certifikační autority