GNU/Linux >> Tutoriales Linux >  >> Ubuntu

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

En este artículo, habremos explicado los pasos necesarios para asegurar Nginx con let's encrypt en Ubuntu 20.04 LTS. 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 abierta, automatizada y gratuita desarrollada por Internet Security Research Group (ISRG) que proporciona certificados SSL gratuitos. Let's Encrypt utiliza un software de cliente (certbot) que automatiza el proceso de creación, validación, firma, implementación y renovación de certificados.

Prerrequisito:

  • Sistema operativo con Ubuntu 20.04
  • 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 APT

Proteja Nginx con Let's Encrypt en Ubuntu 20.04

Paso 1. Primero, antes de comenzar a instalar cualquier paquete en su servidor Ubuntu, siempre recomendamos asegurarse de que todos los paquetes del sistema estén actualizados.

sudo apt update
sudo apt upgrade

Nota:antes de instalar, se debe acceder bien al dominio SSL de Let's Encrypt y usar el host virtual Nginx. Lea el tutorial sobre cómo instalar Nginx en Ubuntu.

Paso 2. Instale Certbot.

Certbot es una herramienta completa y fácil de usar que automatiza las tareas para obtener y renovar certificados Let's Encrypt SSL y configurar servidores web para usar los certificados . Para instalarlo ejecuta los siguientes comandos:

sudo apt install certbot

Después de eso, genere un nuevo conjunto de parámetros DH de 2048 bits escribiendo el siguiente comando:

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

El servidor Let's Encrypt realiza solicitudes HTTP al archivo temporal para verificar que el dominio solicitado se resuelva en el servidor donde se ejecuta certbot. Para hacerlo más simple, vamos a mapear todas las solicitudes HTTP para .well-known/acme-challenge a un solo directorio, /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

Luego, cree los siguientes dos fragmentos que se incluirán en todos los archivos de bloque del servidor 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;
}

Luego, crea el segundo fragmento, 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;

Luego, abra el archivo de bloqueo del servidor de dominio e incluya el 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;
}

No olvide crear un enlace simbólico desde el archivo al directorio habilitado para sitios:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx

Una vez hecho esto, ejecute Certbot con el complemento webroot y obtenga los archivos del certificado SSL emitiendo:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

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

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

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

sudo systemctl reload nginx

Paso 3. 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

Paso 4. Renovar el certificado Let's Encrypt SSL

Y finalmente, pruebe la renovación automática:

sudo certbot renew --dry-run

Eso es todo lo que necesita hacer para instalar SSL Let's Encrypt con Nginx en Ubuntu 20.04 Focal Fossa. Espero que encuentre útil este consejo rápido. Si tiene preguntas o sugerencias, no dude en dejar un comentario a continuación.


Ubuntu
  1. Cómo proteger Nginx con Lets Encrypt en Ubuntu 20.04/18.04

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

  3. Cómo proteger Nginx con Letsencrypt en Ubuntu 20.04

  4. Cómo instalar Elgg con Nginx en Ubuntu 18.04

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

Proteja Nginx con el certificado Let's Encrypt SSL en Ubuntu 18.04

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

Cómo proteger el servidor LEMP con Let's Encrypt Free SSL en Ubuntu 18.04 VPS

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

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

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