Introducción
Cualquier sitio web que aspire a atraer visitantes necesita incluir encriptación SSL/TLS para su dominio. Los certificados SSL/TLS garantizan una conexión segura entre su servidor web y los navegadores.
Let's Encrypt es una autoridad de certificación gratuita que le permite configurar dicha protección. Es la forma más sencilla de proteger su servidor Nginx.
En este artículo, encontrará la forma más sencilla de proteger su servidor Nginx mediante la obtención de certificados de Let's Encrypt con el software Certbot.
Requisitos previos
- Un sistema que ejecuta Ubuntu 20.04 (o Ubuntu 18.04)
- Acceso a una ventana de terminal/línea de comando
- Sudo o raíz privilegios en máquinas locales/remotas
- Nginx instalado y configurado
- Un nombre de dominio registrado
- Un bloque de servidor configurado para ese nombre de dominio
Cómo asegurar Nginx con Let's Encrypt en Ubuntu 20.04
Paso 1:Instalar Certbot
Certbot es una herramienta de software de código abierto para habilitar automáticamente HTTPS utilizando certificados de Let's Encrypt.
El primer paso para asegurar Nginx con Let's Encrypt es instalar Certbot. Para hacerlo, comience abriendo una ventana de terminal y actualizando el repositorio local:
sudo apt update
Luego, descargue e instale Certbot y su complemento Nginx ejecutando:
sudo apt install certbot python3-certbot-nginx
Escriba y
para confirmar la instalación y presione Entrar.
Paso 2:comprobar la configuración de Nginx
Como se indica en los requisitos previos, ya debe tener un dominio registrado y un bloque de servidor Nginx para ese dominio. Como ejemplo, este artículo utiliza el dominio example.com .
Para verificar si está configurado correctamente, abra el archivo de configuración de Nginx:
sudo nano /etc/nginx/sites-available/example.com
Luego, ubique el server_name
directiva y asegúrese de que esté configurada en su nombre de dominio. Como quiera incluir el nombre de dominio con y sin www. prefijo, la línea debe ser similar a la siguiente:
server_name example.com www.example.com;
Paso 3:Ajuste el cortafuegos para permitir el tráfico HTTPS
El siguiente paso es ajustar el firewall para permitir el tráfico HTTPS.
Si siguió la guía de instalación de Nginx, ya habilitó su firewall para permitir Nginx HTTP. A medida que agrega certificados de Let's Encrypt, debe configurar el firewall para el tráfico cifrado.
1. Para asegurarse de que su firewall esté activo y permita el tráfico HTTPS, ejecute el comando:
sudo ufw status
La salida debería indicarle que UFW está activo y brindarle una lista de reglas establecidas. En el siguiente ejemplo, se muestra que el firewall permite el tráfico HTTP de Nginx, pero no HTTPS.
Nginx tiene tres (3) perfiles que puede agregar como reglas:
- HTTP de Nginx (abre el puerto 80)
- HTTPS de Nginx (abre el puerto 443 – tráfico encriptado)
- Nginx completo (abre los puertos 80 y 443)
2. Para permitir el tráfico cifrado, puede agregar el Nginx HTTPS perfil o usar Nginx Full y elimine la regla HTTP de Nginx existente:
a) Permita el tráfico HTTPS de Nginx ejecutando el comando:
sudo ufw allow 'Nginx HTTPS'
b) Elimine Nginx HTTP y use Nginx Full en su lugar con:
sudo ufw deny 'Nginx HTTP'
sudo ufw allow 'Nginx Full'
3. Verifique que haya agregado una regla que permita el tráfico HTTPS usando el ufw status
comando.
Paso 4:Obtenga el Certificado SSL/TLS
El complemento de Nginx para Certbot reconfigura Nginx y recarga su configuración cuando es necesario. Por lo tanto, lo único que debe hacer es generar certificados con el complemento NGINX.
1. Para hacerlo, ejecute el comando:
sudo certbot --nginx -d example.com -d www.example.com
2. El resultado le pide que configure sus ajustes de HTTPS. Ingrese su dirección de correo electrónico y acepte los términos de servicio para continuar.
3. Una vez que configura HTTPS, Certbot completa la generación del certificado y vuelve a cargar Nginx con la nueva configuración.
4. Finalmente, el resultado muestra que ha generado correctamente un certificado y especifica la ubicación del certificado en su servidor.
Paso 5:habilite la renovación automática de certificados
Dado que los certificados de Let's Encrypt caducan cada 90 días, Nginx recomienda configurar y renovar automáticamente el trabajo cron.
1. Primero, abra el archivo de configuración crontab para el usuario actual:
crontab -e
2. Agregue un trabajo cron que ejecute certbot
comando, que renueva el certificado si detecta que el certificado expirará dentro de los 30 días. Prográmelo para que se ejecute diariamente a una hora específica (en este ejemplo, lo hace a las 05:00 a. m.):
0 5 * * * /usr/bin/certbot renew --quiet
El trabajo cron también debe incluir el --quiet
atributo, como en el comando anterior. Esto le indica a certbot que no incluya ningún resultado después de realizar la tarea.
3. Una vez que haya agregado el trabajo cron, guarde los cambios y salga del archivo.