GNU/Linux >> Znalost Linux >  >> Cent OS

Jak zabezpečit Nginx pomocí Let's Encrypt na CentOS 8

V tomto článku vysvětlíme nezbytné kroky k zabezpečení Nginx pomocí let's encrypt na CentOS 8. 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 certifikační autorita, která poskytuje bezplatné SSL certifikáty pro web, funguje od dubna 2016 a je podporována společnostmi a internetovými organizacemi z celého světa, jako jsou Mozilla, Cisco, Chrome , Akamai atd.

Předpoklad:

  • Operační systém s CentOS Linux
  • 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 DNF

Zabezpečte Nginx pomocí Let’s Encrypt na CentOS

Krok 1. První příkaz aktualizuje seznamy balíčků, aby bylo zajištěno, že získáte nejnovější verzi a závislosti.

sudo dnf install epel-release
sudo dnf update
sudo dnf install mod_ssl openssl

Před instalací Let’s Encrypt SSL doména by měla být 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 CentOS 8.

Krok 2. Nainstalujte Certbot.

Balík certbot není součástí standardních úložišť CentOS 8, ale lze jej stáhnout z webu dodavatele:

sudo wget -P /usr/local/bin https://dl.eff.org/certbot-auto
sudo chmod +x /usr/local/bin/certbot-auto

Dále vygenerujte novou sadu 2048bitových parametrů DH pomocí následujícího příkazu:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

K získání certifikátu SSL pro doménu použijeme plugin Webroot, který funguje tak, že vytvoří dočasný soubor pro ověření požadované domény v adresář ${webroot-path}/.well-known/acme-challenge:

sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp nginx /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt

Abyste zabránili duplikaci kódu, vytvořte následující dva úryvky, které budou zahrnuty do všech souborů bloků serveru Nginx:

sudo mkdir /etc/nginx/snippets
$ 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;
}
$ 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 off;

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=63072000" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;

Jakmile budou úryvky vytvořeny, otevřete blok doménového serveru a vložte úryvek letsencrypt.conf, jak je znázorněno níže:

$ nano /etc/nginx/conf.d/example.com.conf

server {
  listen 80;
  server_name example.com www.example.com;

  include snippets/letsencrypt.conf;
}

Znovu načtěte konfiguraci Nginx, aby se změny projevily:

sudo systemctl reload nginx

Potom spusťte tento příkaz, abyste získali certifikát a nechali Certbot automaticky upravit vaši konfiguraci Nginx, aby ji poskytoval, a zapněte přístup HTTPS v jediném kroku:

sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d your-domain.com -d www.your-domain.com

Nakonec upravte blok svého doménového serveru následovně:

$ nano /etc/nginx/conf.d/example.com.conf

server {
    listen 80;
    server_name www.your-domain.com your-domain.com;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.your-domain.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;

    # . . . other code
}

Znovu načtěte službu Nginx, aby se změny projevily:

sudo systemctl reload nginx

Krok 4. 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

Blahopřejeme, naučili jste se zabezpečit Nginx pomocí let’s encrypt na CentOS 8. Pokud máte nějaké dotazy, zanechte prosím komentář níže.


Cent OS
  1. Jak nainstalovat Phorum s Nginx na CentOS 7

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

  3. Jak zabezpečit Nginx pomocí Letsencrypt na Rocky Linux/Centos 8

  1. Jak nainstalovat Let’s Encrypt with Apache na CentOS 7

  2. Jak nainstalovat Let’s Encrypt na CentOS 8 s Nginx

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

  1. Zabezpečte Nginx pomocí Lets Encrypt na CentOS 7

  2. Jak nainstalovat Nginx na CentOS 7

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