GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo proteger Nginx con Let's Encrypt en CentOS 8

En este artículo, habremos explicado los pasos necesarios para asegurar Nginx con let's encrypt en CentOS 8. Antes de continuar con este tutorial, asegúrese de haber iniciado sesión como usuario con sudo privilegios Todos los comandos de este tutorial deben ejecutarse como un usuario no root.

Let's Encrypt es una autoridad de certificación que proporciona certificados SSL gratuitos para el sitio web, que opera desde abril de 2016 y cuenta con el respaldo de empresas y organizaciones de Internet de todo el mundo, como Mozilla, Cisco, Chrome. , Akamai, etc.

Prerrequisito:

  • Sistema operativo con CentOS Linux
  • Dirección IPv4 del servidor con privilegios de superusuario (acceso raíz)
  • Terminal Gnome para escritorio Linux
  • Cliente PuTTy SSH para Windows o macOS
  • Powershell para Windows 10/11
  • Familiarizarse con los comandos DNF

Proteja Nginx con Let's Encrypt en CentOS

Paso 1. El primer comando actualizará las listas de paquetes para garantizar que obtenga la versión y las dependencias más recientes.

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

Antes de instalar el dominio Let's Encrypt SSL se debe acceder bien y utilizar el host virtual Nginx. Lea el tutorial sobre cómo instalar Nginx en CentOS 8.

Paso 2. Instale Certbot.

El paquete certbot no está incluido en los repositorios estándar de CentOS 8, pero se puede descargar desde el sitio web del proveedor:

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

Luego, genere un nuevo conjunto de parámetros DH de 2048 bits usando el siguiente comando:

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

Para obtener un certificado SSL para el dominio, vamos a utilizar el complemento Webroot que funciona creando un archivo temporal para validar el dominio solicitado en el directorio ${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

Para evitar la duplicación de código, cree los siguientes dos fragmentos que se incluirán en todos los archivos de bloque del servidor 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;

Una vez que se crean los fragmentos, abra el bloque del servidor de dominio e incluya el fragmento letsencrypt.conf, como se muestra a continuación:

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

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

  include snippets/letsencrypt.conf;
}

Vuelva a cargar la configuración de Nginx para que los cambios surtan efecto:

sudo systemctl reload nginx

Luego, ejecute este comando para obtener un certificado y haga que Certbot edite su configuración de Nginx automáticamente para servirlo, activando el acceso HTTPS en un solo paso:

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

Finalmente, pasos, edite su bloque de servidor de dominio de la siguiente manera:

$ 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
}

Vuelva a cargar el servicio Nginx para que los cambios surtan efecto:

sudo systemctl reload nginx

Paso 4. Comprobación del estado de su certificado.

Puede asegurarse de que Certbot creó su certificado SSL correctamente utilizando la Prueba de servidor SSL de la empresa de seguridad en la nube Qualys. Abra el siguiente enlace en su navegador web preferido, reemplazando your-domain.com con su dominio base:

https://www.ssllabs.com/ssltest/analyze.html?d=your-domain.com

Felicitaciones, ha aprendido a proteger Nginx con let's encrypt en CentOS 8. Si tiene alguna pregunta, deje un comentario a continuación.


Cent OS
  1. Cómo instalar Phorum con Nginx en CentOS 7

  2. Asegure Nginx con Let's Encrypt en Ubuntu 18.04 - ¿Cómo hacerlo?

  3. Cómo asegurar Nginx con Letsencrypt en Rocky Linux/Centos 8

  4. Cómo instalar Let's Encrypt con Apache en CentOS 7

  5. Cómo proteger Nginx con Let's Encrypt en Ubuntu 20.04

Cómo configurar Nginx Server Block y Secure Nginx con Let's Encrypt SSL en Rocky Linux 8 / CentOS 8

Cómo instalar Let's Encrypt SSL con Nginx en CentOS 7

Cómo proteger Nginx con el certificado SSL de Let's Encrypt

Cómo proteger Apache con Let's Encrypt en CentOS 8

Cómo proteger Nginx con Let's Encrypt en Ubuntu 20.04

Cómo proteger Apache con Let's Encrypt en Ubuntu 20.04