Certbot es una herramienta gratuita y de código abierto que permite obtener y administrar certificados SSL/TLS de Let's Encrypt. Su principal objetivo es habilitar HTTPS en servidores web como Nginx y Apache de forma automatizada.
Con Certbot puedes emitir certificados digitales, configurar HTTPS automáticamente y renovar los certificados antes de su expiración. Actualmente, Let's Encrypt utiliza certificados con una validez de 90 días, por lo que la automatización de renovación es fundamental.
La documentación oficial recomienda instalar Certbot utilizando Snap en sistemas modernos basados en Linux.
Sitio oficial de Certbot: https://certbot.eff.org/
Requisitos previos
Antes de comenzar debes contar con lo siguiente:
- Un servidor Linux.
- Acceso root o permisos sudo.
- Un dominio apuntando al servidor.
- Puertos 80 y 443 abiertos en el firewall.
- Nginx o Apache instalado.
Actualizar el sistema
Antes de instalar Certbot es recomendable actualizar los paquetes del sistema.
Ubuntu y Debian
sudo apt update && sudo apt upgrade -y
RHEL, Rocky Linux y AlmaLinux
sudo dnf update -y
Instalar Snapd
Certbot recomienda actualmente el uso de Snap para obtener versiones actualizadas y compatibles.
Instalar Snap en Ubuntu y Debian
sudo apt install snapd -y
Instala y actualiza el paquete core de Snap:
sudo snap install core
sudo snap refresh core
Instalar Certbot
Instalación usando Snap
sudo snap install --classic certbot
Crear enlace simbólico para ejecutar Certbot desde cualquier ubicación:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Verifica la instalación:
certbot --version
Respuesta:
certbot 0.40.0
Instalar integración con Nginx o Apache
Instalar Certbot para Nginx
sudo apt install python3-certbot-nginx -y
Instalar Certbot para Apache
sudo apt install python3-certbot-apache -y
Configurar HTTPS con Nginx
Para emitir e instalar automáticamente un certificado SSL usando Nginx:
sudo certbot --nginx -d tudominio.com -d www.tudominio.com
Durante el proceso Certbot solicitará:
Correo electrónico
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): codigoelectronica@gmail.com
Aceptación de términos de Let's Encrypt
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.6-August-18-2025.pdf. You must agree
...
(A)gree/(C)ancel: A
Confirmación para redirigir HTTP hacia HTTPS
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/codigoelectronicacom
Una vez finalizado, Certbot modificará automáticamente la configuración de Nginx.
Reiniciar Nginx
sudo systemctl reload nginx
Configurar HTTPS con Apache
Para instalar certificados SSL automáticamente en Apache:
sudo certbot --apache -d tudominio.com -d www.tudominio.com
Certbot detectará la configuración de Apache y aplicará automáticamente HTTPS.
Reiniciar Apache
sudo systemctl reload apache2
Verificar el certificado SSL
Puedes validar el estado del certificado ejecutando:
sudo certbot certificates
También puedes abrir tu sitio web en el navegador y verificar que aparezca el candado HTTPS.
Configurar renovación automática
Certbot normalmente instala automáticamente una tarea programada mediante systemd o cron para renovar certificados.
Puedes probar la renovación manualmente:
sudo certbot renew --dry-run
Si el comando finaliza correctamente, la renovación automática está funcionando.
Configurar firewall
Debes permitir tráfico HTTP y HTTPS.
UFW en Ubuntu
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
Firewalld en Rocky Linux o AlmaLinux
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Problemas comunes
El dominio no apunta al servidor
Verifica que los registros DNS A o CNAME estén configurados correctamente.
Puerto 80 bloqueado
Certbot necesita acceso al puerto 80 para validar el dominio usando HTTP-01.
Nginx o Apache no detectado
Asegúrate de que el servidor web esté instalado y funcionando correctamente.
sudo systemctl status nginx
sudo systemctl status apache2
Comandos útiles de Certbot
Listar certificados
sudo certbot certificates
Renovar certificados manualmente
sudo certbot renew
Eliminar un certificado
sudo certbot delete
Conclusión
Certbot es una de las herramientas más utilizadas para implementar HTTPS utilizando certificados gratuitos de Let's Encrypt. Gracias a su automatización, permite configurar SSL/TLS en pocos minutos y mantener los certificados renovados automáticamente.
Para entornos productivos se recomienda usar siempre versiones actualizadas de Certbot y validar periódicamente la renovación automática.
Referencias oficiales
- Documentación oficial de Certbot: https://certbot.eff.org/
- Documentación de Let's Encrypt: https://letsencrypt.org/