Resumen
En la siguiente publicación, cubriremos el procedimiento para proteger Nginx con Let's Encrypt SSL en una máquina Debian 10 (este procedimiento también se puede aplicar en Debian 11). La publicación mostrará el escenario, donde necesitamos instalar certbot en nuestra máquina Debian y obtener el certificado SSL de Let's Encrypt, configurar la redirección automática de HTTPS y probar también la renovación del certificado. Aquí ya tenemos una máquina Debian con Nginx preinstalado en la que seguiremos los pasos sobre cómo asegurar nginx con let's encrypt ssl.
Requisitos
1.. Registrado y válido un nombre de dominio apuntando a su servidor Debian.
2. Servidor Debian 10 (o servidor Debian 11)
3.. Servidor web Nginx instalado y funcionando
4.. Configuración del cortafuegos (abrir puertos HTTP y HTTPS)
Si tiene un firewall UFW o IPTABLES, debe configurarlos para que abran los puertos 80 y 443 para HTTP y HTTPS para no solo alojar su sitio web
UFW
sudo ufw allow http sudo ufw allow https
IPTABLES
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT or sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Instalación de bots certificados
Usaremos la herramienta Cerbot de Let's Encrypt para obtener el certificado SSL y el complemento Nginx para certbot también. Ambas herramientas nos ayudarán a obtener el certificado de forma muy sencilla, rápida y además realizar los cambios de configuración necesarios sobre Nginx. Además de eso, las herramientas tienen funciones de automatización, por lo que al vencimiento de SSL, pueden renovar e instalar el certificado nuevamente.
sudo apt install certbot python3-certbot-nginx
Adquirir el certificado SSL de Let's Encrypt
Una vez que haya confirmado que los puertos en el firewall están abiertos y haya terminado con la instalación de certbot. Para adquirir el certificado SSL de Let's encrypt solo necesitamos ejecutar el comando:
sudo certbot --nginx -d yourdomain.com
Una nota:antes de ejecutar el comando, primero es necesario en su archivo de configuración nginx, escriba en el parámetro server_name el nombre de dominio real que apuntó a su servidor. Certbot buscará en la configuración de bloqueo de su servidor ese parámetro y creará los archivos de configuración de cifrado de acuerdo con ese parámetro. Ejemplo en una imagen a continuación:
sudo nano /etc/nginx/sites-available/example.com
Cuando ejecute este comando, se iniciará el asistente de certbot. Si está ejecutando el cerbot por primera vez, primero le pedirá que proporcione una dirección de correo electrónico para usar como contacto y que acepte los términos de la licencia de Let's encrypt.
Después de eso, ejecutará el desafío http, obtendrá el certificado y al final le preguntará si desea que configure de inmediato la redirección https, que también es una buena opción.
Tan pronto como se complete la configuración de redirección, el nuevo dominio con certificado SSL debería funcionar de inmediato.
Configurar y probar la renovación automática
Los certificados de Let's Encrypt tienen una validez predeterminada de tres meses y la renovación automática de cerbot está configurada para renovar el certificado al menos una vez, cuando el certificado tiene menos de 30 días de validez. Una vez que se adquiere el certificado SSL, válido y activo, duplica si el servicio de temporizador del certbot está activo y en ejecución y prueba el proceso de renovación con la opción de ejecución en seco:
sudo systemctl status certbot.timer
sudo certbot renew --dry-run
Comprueba la configuración de Nginx
Puede volver a verificar la configuración de nginx si el cerbot ha escrito con éxito la configuración para los certificados SSL y para la redirección de HTTPS. Cerbot reiniciará el nginx una vez que haya terminado con la configuración, debe tener su dominio/sitio web protegido y funcionando con el SSL activo.
Resumen
Para resumir, repasamos los pasos para asegurar Nginx con Let's Encrypt SSL en la máquina Debian 10 y también en la máquina Debian 11. Utilizamos la herramienta certbot de let's encrypt para las solicitudes de certificados SSL y su renovación automática. Afortunadamente para certbot y su complemento nginx, el proceso es realmente simple, directo y rápido de completar. Una sugerencia sobre esto es:sería una buena opción tener una copia de seguridad de la carpeta let's encrypt y tener una copia de seguridad frecuente (como ha sugerido el propio certbot). Por supuesto, esto es opcional y depende de cómo haya establecido la frecuencia de renovación de certificados.
El servicio Ciframos, aunque es gratuito y muy popular entre el mundo tecnológico, es una buena opción para proteger algunos tipos de sitios web. Sin embargo, no se recomienda el uso de sus certificados gratuitos en sitios web de comercio electrónico para un ejemplo o cualquier tipo de sitio que necesite pasar y almacenar datos muy confidenciales (tarjetas de crédito y similares). Es por eso que por defecto se recomienda tener un tiempo de renovación corto para los certificados SSL. En ese sentido, Let's encrypt no es la única opción gratuita para usar. Cloudflare tiene la misma opción para proporcionar SSL gratuitos y también se puede usar para proteger su sitio web Nginx. Si te interesa esta opción, puedes consultar la publicación en este enlace.