Vyhledávání na webu

Jak zabezpečit Nginx pomocí Let's Encrypt na Ubuntu a Debianu


V návaznosti na předchozí tutoriál Let's Encrypt týkající se Apache SSL v tomto článku probereme, jak vygenerovat a nainstalovat bezplatný certifikát SSL/TLS vydaný Let's Encrypt CA pro webový server Nginx na Ubuntu nebo Debian.

Přečtěte si také
  1. Zabezpečte Apache pomocí Free Let’s Encrypt na Ubuntu a Debianu
  2. Nainstalujte Let’s Encrypt SSL to Secure Apache na RHEL a CentOS
Testovací ukázkové prostředí

Požadavky

  1. Registrovaná doména s platnými záznamy DNS A, které odkazují zpět na IP adresu vašeho serveru.
  2. Nainstalovaný webový server Nginx s povoleným SSL a Vhost v případě, že plánujete hostovat více domén nebo subdomén.

Krok 1: Instalace webového serveru Nginx

1. V prvním kroku nainstalujte webový server Nginx, pokud již není nainstalován, zadáním níže uvedeného příkazu:

sudo apt-get install nginx

Krok 2: Vygenerujte certifikát Let's Encrypt SSL pro Nginx

2. Před vygenerováním bezplatného certifikátu SSL/TLS nainstalujte software Let's Encrypt v hierarchii souborového systému /usr/local/ pomocí git klienta zadáním následujících příkazů:

sudo apt-get -y install git
cd /usr/local/
sudo git clone https://github.com/letsencrypt/letsencrypt

3. Přestože je postup získání certifikátu pro Nginx automatizovaný, stále můžete ručně vytvořit a nainstalovat bezplatný certifikát SSL pro Nginx pomocí pluginu Let’s Encrypt Standalone.

Tato metoda vyžaduje, aby se port 80 ve vašem systému po krátkou dobu nepoužíval, zatímco klient Let’s Encrypt ověřuje identitu serveru před vygenerováním certifikátu.

V případě, že již používáte Nginx, zastavte službu vydáním následujícího příkazu.


sudo service nginx stop
OR
sudo systemctl stop nginx

V případě, že provozujete jinou službu, která se váže na port 80, zastavte také tuto službu.

4. Spuštěním příkazu netstat potvrďte, že port 80 je volný:

sudo netstat -tlpn | grep 80

5. Nyní je čas spustit letsencrypt a získat certifikát SSL. Přejděte do instalačního adresáře Let's Encrypt, který se nachází v systémové cestě /usr/local/letsencrypt, a spusťte příkaz letsencrypt-auto zadáním určitého --standalone a příznak -d pro každou doménu nebo subdoménu, pro kterou chcete vygenerovat certifikát.

cd /usr/local/letsencrypt
sudo ./letsencrypt-auto certonly --standalone -d your_domain.tld 

6. Zadejte e-mailovou adresu, kterou bude Let’s Encrypt používat pro obnovení ztraceného klíče nebo naléhavá upozornění.

7. Odsouhlaste podmínky licence stisknutím klávesy Enter.

8. Nakonec, pokud vše proběhlo úspěšně, měla by se na vaší terminálové konzoli objevit zpráva podobná níže uvedenému snímku obrazovky.

Krok 3: Nainstalujte Let's Encrypt SSL certifikát v Nginx

9. Nyní, když byl váš certifikát SSL vygenerován, je čas nakonfigurovat webový server Nginx, aby jej používal. Nově jsou certifikáty SSL umístěny v /etc/letsencrypt/live/ v adresáři pojmenovaném podle názvu vaší domény. Spusťte příkaz ls a zobrazí se seznam souborů certifikátů vydaných pro vaši doménu.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/caeszar.tk

10. Dále otevřete soubor /etc/nginx/sites-available/default pomocí textového editoru a přidejte následující blok za první řádek s komentářem, který určuje začátek SSL blok. Použijte níže uvedený snímek obrazovky jako vodítko.

sudo nano /etc/nginx/sites-enabled/default

Výňatek z bloku Nginx:

SSL configuration
        #
        listen 443 ssl default_server;
        ssl_certificate /etc/letsencrypt/live/caeszar.tk/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/caeszar.tk/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
        ssl_dhparam /etc/nginx/ssl/dhparams.pem;

Nahraďte odpovídajícím způsobem hodnoty názvu domény pro certifikáty SSL.

11. V dalším kroku vygenerujte silnou šifru Diffie-Hellman v adresáři /etc/nginx/ssl/, aby byl váš server chráněn před útok Logjam spuštěním následujících příkazů.

sudo mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
sudo openssl dhparam -out dhparams.pem 2048

12. Nakonec restartujte démona Nginx, aby se změny projevily.

sudo systemctl restart nginx

a otestujte svůj certifikát SSL návštěvou níže uvedené adresy URL.

https://www.ssllabs.com/ssltest/analyze.html

Krok 4: Automatická obnova Pojďme šifrovat certifikáty Nginx

13. Certifikáty vydané Let’s Encrypt CA jsou platné 90 dní. Pro automatické obnovení souborů před datem vypršení platnosti vytvořte bash skript ssl-renew.sh v adresáři /usr/local/bin/ s následujícím obsahem.

sudo nano /usr/local/bin/ssl-renew.sh

Přidejte následující obsah do souboru ssl-renew.sh.

#!/bin/bash

cd /usr/local/letsencrypt
sudo ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/var/www/html/ -d your_domain.tld
sudo systemctl reload nginx
exit 0

Nahraďte proměnnou --webroot-path tak, aby odpovídala kořenovému adresáři vašeho dokumentu Nginx. Ujistěte se, že je skript spustitelný zadáním následujícího příkazu.

sudo chmod +x /usr/local/bin/ssl-renew.sh

14. Nakonec přidejte úlohu cron, která bude skript spouštět každé dva měsíce o půlnoci, aby bylo zajištěno, že váš certifikát bude aktualizován přibližně 30 dní před vypršením platnosti.

sudo crontab -e

Přidejte následující řádek na konec souboru.

0 1 1 */2 * /usr/local/bin/ssl-renew.sh >> /var/log/your_domain.tld-renew.log 2>&1

A je to! Váš server Nginx nyní poskytuje obsah SSL pomocí bezplatného certifikátu Let’s Encrypt SSL.