Certbot en Linux: HTTPS y renovación comprobable
Certbot automatiza la solicitud de certificados TLS y puede configurar Apache o Nginx para servir HTTPS. El certificado acredita el dominio validado; no corrige por sí mismo permisos, vulnerabilidades de una aplicación o configuraciones de acceso.
Esta guía se centra en el ciclo operativo del certificado en Ubuntu o Debian. Se utiliza el paquete de la distribución cuando está mantenido para esa versión. Certbot también documenta otros métodos, como snap: elige uno y evita mezclar instalaciones.
Prepara dominio y servidor
Para el desafío HTTP-01 habitual necesitas que cada nombre solicitado resuelva hacia el servidor que atenderá la validación y que el puerto 80 sea accesible desde internet.
Revisa registros A y AAAA. Un IPv6 incorrecto puede afectar la validación aunque IPv4 funcione. Si utilizas un CDN o balanceador, identifica dónde termina TLS y quién recibirá la petición del desafío.
Solicita solo nombres que controles y que estén configurados. Añadir www por costumbre puede hacer fallar una solicitud si ese nombre no resuelve.
Instala un solo plugin
Para Apache:
sudo apt update
apt-cache policy certbot python3-certbot-apache
sudo apt install certbot python3-certbot-apache
sudo apache2ctl configtest
Para Nginx, como alternativa:
sudo apt update
apt-cache policy certbot python3-certbot-nginx
sudo apt install certbot python3-certbot-nginx
sudo nginx -t
No hace falta instalar ambos servidores. Confirma la versión con certbot --version y conserva una copia de sus archivos de configuración antes de permitir modificaciones.
Emite e instala el certificado
Con el virtual host HTTP funcionando en tu dominio, ejecuta solo el comando correspondiente:
sudo certbot --apache -d ejemplo.com
sudo certbot --nginx -d ejemplo.com
Sustituye ejemplo.com. Revisa las condiciones y decisiones que presenta tu versión. No bases la supervisión en supuestos avisos de correo: necesitas comprobar el certificado y su fecha de expiración desde tu infraestructura.
Los plugins pueden modificar la configuración web. Revisa los cambios y valida de nuevo la sintaxis. Si el servicio está detrás de otro terminador TLS, instalar aquí un certificado no cambia necesariamente lo que reciben los visitantes.
Comprueba la respuesta pública
curl -I https://ejemplo.com/
curl -I http://ejemplo.com/
sudo certbot certificates
Comprueba que HTTPS valida sin omitir errores y que HTTP se redirige según la política elegida. Si necesitas inspeccionar el certificado servido:
openssl s_client -connect ejemplo.com:443 -servername ejemplo.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates
Este último comando muestra datos del certificado; no reemplaza una validación completa de confianza o una prueba de la aplicación.
Verifica cómo se renovará
sudo certbot renew --dry-run
systemctl list-timers --all
El ensayo de renovación utiliza el entorno de pruebas correspondiente y comprueba la posibilidad de renovar. No equivale a desplegar un certificado nuevo de producción.
Localiza el timer o cron instalado por tu método y revisa su estado y registros. No asumas que todos los sistemas utilizan una unidad llamada certbot.timer. Evita crear otra tarea si ya existe una programación funcional.
Después de una renovación, el proceso que sirve TLS debe cargar el certificado actualizado. Los plugins suelen integrar esta operación; con certonly y una instalación manual tendrás que definir y probar un deploy hook adecuado.
Cuándo cambia el método de validación
Standalone necesita un puerto disponible para levantar su servidor temporal. Detener Apache cada vez añade interrupciones y exige automatizar ese ciclo; considera el plugin o webroot cuando corresponda.
DNS-01 es útil para certificados comodín y otros escenarios. Requiere publicar registros TXT y, para automatizar, proteger las credenciales del proveedor DNS con permisos limitados. No abras puertos nuevos si has elegido un método que no los necesita.
Retirada y recuperación
Eliminar una entrada con certbot delete no equivale a revocar el certificado. Antes de retirarla, quita las referencias del servidor web o podrías impedir su arranque.
Si una clave privada se ha comprometido, sigue el procedimiento de revocación y emite una nueva clave y certificado. No fuerces renovaciones repetidas para diagnosticar un problema: utiliza pruebas, registros y documentación de los límites del servicio.
Preguntas frecuentes
¿El certificado siempre dura 90 días?
La duración depende del perfil y de las políticas vigentes. Comprueba las fechas reales y permite que el cliente mantenido determine cuándo corresponde renovar.
¿Necesito mantener abierto el puerto 80 después de activar HTTPS?
Si renuevas mediante HTTP-01, la validación debe seguir siendo accesible en 80. DNS-01 utiliza otro mecanismo y no requiere ese puerto.
Puede faltar una recarga o el certificado público puede estar servido por un proxy, CDN o balanceador distinto. Comprueba el punto que termina TLS.
En pocas palabras
Certbot obtiene y administra certificados, pero la continuidad depende de DNS, validación de dominio, programación y recarga del servicio. Una emisión inicial correcta no demuestra que todas las renovaciones futuras funcionarán.
Conclusión
Guarda el método de instalación y validación elegido. Comprueba la renovación después de cambiar DNS, firewall, proxy o servidor web y supervisa el certificado que realmente recibe el visitante.
Para continuar, revisa Cómo instalar Ubuntu desde una USB: paso a paso y Cómo instalar Docker en Ubuntu 24.04: guía práctica paso a paso.
Fuentes y documentación
Documentación de certbot.eff.org.
