GNU/Linux >> Znalost Linux >  >> Ubuntu

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

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.


Ubuntu
  1. Zabezpečte Nginx pomocí Let's Encrypt na Ubuntu 18.04 - Jak na to?

  2. Jak zabezpečit Nginx pomocí Letsencrypt na Ubuntu 20.04

  3. Jak nainstalovat Elgg s Nginx na Ubuntu 18.04

  1. Jak zabezpečit Nginx pomocí Lets Encrypt na Ubuntu 20.04 / 18.04

  2. Zabezpečte Nginx pomocí Lets Encrypt na Ubuntu 18.04

  3. Jak zabezpečit Nginx pomocí Let's Encrypt na Ubuntu 20.04

  1. Zabezpečte Nginx pomocí Lets Encrypt na Ubuntu 16.04

  2. Zabezpečte Nginx pomocí Lets Encrypt na Ubuntu 20.04

  3. Zabezpečte Nginx pomocí Lets Encrypt na CentOS 8