Para configurar un certificado SSL en Apache sobre Ubuntu con Let's Encrypt solo necesitas ejecutar cuatro comandos y el cliente Certbot se encarga del resto. En menos de diez minutos tendrás HTTPS activo y renovación automática funcionando.
Esta guía cubre todo el proceso: desde los requisitos previos hasta la verificación final, con los comandos exactos que debes copiar y pegar.
Requisitos antes de empezar
Antes de lanzar Certbot asegúrate de tener:
- Un servidor con Ubuntu 20.04, 22.04 o 24.04 y acceso root (o sudo).
- Apache 2.4+ instalado y en ejecución.
- Un dominio apuntando a la IP del servidor mediante un registro A (o AAAA para IPv6). El DNS debe estar propagado — verifica con
dig +short tudominio.com. - Los puertos 80 y 443 abiertos en el firewall (UFW o las reglas de tu proveedor).
Si usas UFW, abre ambos puertos con:
sudo ufw allow 'Apache Full'
sudo ufw reload
Paso 1 — Instalar Certbot y el plugin de Apache
Certbot es la herramienta oficial de Let's Encrypt. En Ubuntu la forma más actualizada de instalarlo es mediante snap:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
El enlace simbólico hace que certbot esté disponible globalmente en el sistema.
Paso 2 — Obtener y configurar el certificado
Certbot puede leer tu configuración de Apache y modificarla automáticamente. Ejecuta:
sudo certbot --apache
El asistente te pedirá:
- Tu dirección de correo electrónico (para avisos de renovación).
- Aceptar los Términos de Servicio de Let's Encrypt.
- Seleccionar el dominio (o dominios) para los que quieres el certificado — los lista automáticamente desde tus Virtual Hosts.
Si necesitas incluir www y el dominio raíz, Certbot los detecta juntos. Si quieres forzarlo manualmente usa la bandera -d:
sudo certbot --apache -d tudominio.com -d www.tudominio.com
Al terminar, Certbot escribe un nuevo Virtual Host en /etc/apache2/sites-available/tudominio.com-le-ssl.conf y activa la redirección de HTTP a HTTPS si así lo indicas.
Paso 3 — Verificar la configuración de Apache
Revisa que Apache no tenga errores de sintaxis antes de recargar:
sudo apache2ctl configtest
Si ves Syntax OK, recarga el servicio:
sudo systemctl reload apache2
Abre tu sitio en el navegador con https://tudominio.com. Deberías ver el candado verde (o el icono de conexión segura) en la barra de direcciones.
Confirmar el certificado desde la terminal
sudo certbot certificates
Esto muestra la ruta del certificado, la clave privada y la fecha de vencimiento.
Paso 4 — Renovación automática
Los certificados de Let's Encrypt vencen cada 90 días. Certbot instala un temporizador de systemd que intenta renovar dos veces al día cuando el certificado está a menos de 30 días de expirar.
Comprueba que el temporizador está activo:
sudo systemctl status snap.certbot.renew.timer
Para simular una renovación y confirmar que todo funciona:
sudo certbot renew --dry-run
Si el resultado termina con "Congratulations, all simulated renewals succeeded", la renovación automática está lista.
Solución de problemas comunes
| Error | Causa habitual | Solución |
|---|---|---|
Connection refused on port 80 |
El firewall bloquea HTTP | sudo ufw allow 80 |
DNS problem: NXDOMAIN |
El dominio no apunta al servidor | Verifica el registro A en tu DNS |
Too many certificates already issued |
Límite de 5 certificados/dominio/semana | Usa --staging para pruebas |
| Sitio muestra contenido mixto (mixed content) | Recursos internos cargados por HTTP | Cambia URLs a // o https:// en el código |
Si administras varios sitios o necesitas escalar más allá de un servidor, vale la pena revisar los planes de hosting gestionado con SSL incluido que eliminen esta carga operativa de tu equipo.
Para más artículos sobre seguridad web, visita nuestra guía de seguridad SSL.
Conclusiones clave
- Certbot con el plugin
--apacheautomatiza tanto la emisión como la modificación de los Virtual Hosts. - La instalación completa lleva menos de diez minutos si el DNS ya está propagado.
- El temporizador de systemd renueva el certificado automáticamente — no necesitas recordarlo manualmente.
- Ante errores, lo primero es comprobar el firewall y la resolución DNS del dominio.
- Usa
--stagingpara pruebas y evitar límites de emisión.
¿Prefieres un entorno donde el SSL ya venga configurado desde el primer día? Conoce los planes de hosting de elenlace.com y delega la gestión técnica a expertos.
Preguntas frecuentes
¿Let's Encrypt es seguro para un sitio de producción?
Sí. Let's Encrypt emite certificados DV (validación de dominio) de 2048 o 4096 bits, reconocidos por todos los navegadores modernos. Es el mismo nivel de cifrado que muchos certificados de pago. La diferencia con los certificados OV/EV está en la validación de identidad de la organización, no en el cifrado en sí.
¿Qué pasa si no renuevo a tiempo?
El navegador muestra un error de "certificado expirado" que bloquea el acceso de los visitantes. El temporizador automático de Certbot evita esto, pero si lo deshabilitaste deberás renovar manualmente con sudo certbot renew antes de que pasen los 90 días.
¿Puedo usar este mismo proceso para múltiples dominios en el mismo servidor?
Sí. Cada Virtual Host en Apache puede tener su propio certificado. Ejecuta sudo certbot --apache nuevamente para cada dominio adicional, o añade todos con -d dominio1.com -d dominio2.com en un solo certificado SAN (Subject Alternative Name).
¿Certbot modifica mis archivos de configuración de Apache?
Sí, agrega directivas SSL al Virtual Host del puerto 443 y opcionalmente una redirección en el puerto 80. Guarda una copia de seguridad con extensión .bak antes de modificar. Si prefieres control total, usa la opción certonly para obtener solo los archivos del certificado sin tocar la configuración de Apache.
Para saber más
Otros proveedores y guías que vale la pena comparar: