SSL gratis para todos tus sitios: cómo funciona Let's Encrypt (y cómo automatizarlo)
Pagar por certificados SSL no tiene sentido desde 2016. Let's Encrypt los emite gratis — pero el trabajo real es renovarlos cada 90 días, para siempre, sin caídas. Así funcionan de verdad TLS y ACME, cómo arreglar los errores comunes, y cómo hacer de la renovación algo en lo que nunca piensas.
Hubo un tiempo en que un certificado SSL era una partida de la factura — 50 a 200 € al año, por dominio, comprado a un revendedor e instalado a mano. Desde que Let's Encrypt se lanzó en 2016, eso simplemente se acabó. El HTTPS es ahora gratuito, automatizable y esperado: los navegadores marcan el HTTP simple como «No seguro», y Google trata el HTTPS como una señal de posicionamiento. Si en 2026 sigues pagando por un certificado básico de validación de dominio, estás pagando por nada.
Pero «gratis» esconde el trabajo real. Un certificado de Let's Encrypt solo es válido 90 días. El valor nunca fue el certificado — es mantener el certificado de cada sitio renovado, para siempre, sin una caída a las 3 de la madrugada cuando uno caduca en silencio. Este artículo explica cómo funcionan de verdad TLS y Let's Encrypt, cómo arreglar los errores que todo el mundo encuentra, y cómo hacer de la renovación un problema en el que no tendrás que volver a pensar.
Repaso en 60 segundos: qué hace en realidad TLS
Cuando un navegador conecta por HTTPS, TLS (el sucesor de SSL — seguimos diciendo «SSL» por costumbre) hace dos trabajos:
- Cifrado — nadie entre el navegador y tu servidor puede leer el tráfico. Contraseñas, sesiones y datos de formulario siguen siendo privados en cualquier red.
- Identidad — un certificado, firmado por una autoridad de certificación (CA) de confianza, demuestra que el servidor es de verdad
example.comy no un impostor. Eso es lo que significa el candado.
Un certificado no es más que una clave pública más unas afirmaciones de identidad, firmadas criptográficamente por una CA en la que el navegador ya confía. Lo difícil, históricamente, era conseguir que una CA lo firmara — eso implicaba dinero y pasos manuales. Let's Encrypt automatizó exactamente eso.
Cómo demuestra Let's Encrypt que posees el dominio (ACME)
Let's Encrypt es una CA gratuita y automatizada. No firmará un certificado para example.com hasta que demuestres que controlas ese dominio, mediante un protocolo llamado ACME. Hay dos formas de superar el reto:
- HTTP-01 — la CA pide a tu servidor que coloque un archivo token concreto en
http://tudominio/.well-known/acme-challenge/…. Recupera esa URL; si el token está ahí, controlas claramente el sitio. Esto necesita el puerto 80 accesible y funciona para un nombre de host a la vez. - DNS-01 — la CA te pide publicar un registro
TXTconcreto en_acme-challenge.tudominio. Consulta el DNS; si el registro coincide, quedas validado. Este no necesita un servidor web abierto y es la única forma de obtener un certificado wildcard (*.tudominio).
Una vez validada, la CA firma tu certificado. Un cliente como certbot automatiza todo el baile — solicitar, demostrar, recibir, instalar — y puede recargar tu servidor web para que el nuevo certificado entre en vigor sin caídas.
La renovación es el trabajo de verdad
Aquí está la parte que se subestima. Esa vida de 90 días es deliberada: los certificados de corta duración limitan el daño de una clave robada y fuerzan la automatización. Pero significa que cada certificado debe renovarse aproximadamente cada 60 días (se renueva antes de caducar, no el mismo día). Si se te pasa, los visitantes reciben una advertencia del navegador a pantalla completa — de las que hacen que la gente se vaya y no vuelva.
El consejo estándar es una tarea cron que ejecuta certbot renew dos veces al día; certbot solo renueva de verdad los certificados dentro de la ventana de 30 días. Funciona — hasta que deja de hacerlo: una renovación falla en silencio porque el puerto 80 quedó bloqueado, o un registro DNS cambió, o un archivo de bloqueo de certbot obsoleto impide la ejecución, y nadie lo nota hasta que el certificado caduca. Renovar no es difícil; notar una renovación fallida es donde se queman los sitios.
Los errores que todo el mundo encuentra (y la solución)
- «Timeout during connect» / falla HTTP-01 — la CA no pudo alcanzar el puerto 80. Comprueba que tu cortafuegos (UFW/cortafuegos cloud) permita la entrada por
80, y que el DNS del dominio apunte de verdad a este servidor. - «DNS problem: NXDOMAIN» / registro no encontrado — el dominio aún no resuelve, o estás emitiendo antes de la propagación. Espera a que el DNS se propague; para DNS-01, confirma que el registro TXT
_acme-challengeestá activo antes de validar. - Un registro CAA prohíbe la emisión — un registro DNS
CAAen tu dominio restringe qué CA pueden emitir. Añádeleletsencrypt.org, o quita el registro restrictivo. - «Too many certificates already issued» (límite de tasa) — Let's Encrypt limita los certificados por dominio registrado y semana. Mientras pruebas, usa el entorno de staging para no agotar tu cuota de producción, y luego cambia a producción cuando funcione.
- Certificado renovado, pero el sitio sigue sirviendo el antiguo — el servidor web no se recargó tras la renovación. La renovación debe disparar un
nginx -s reload(o equivalente) para tomar el nuevo certificado.
Ninguno es exótico. Pero diagnosticarlos en una docena de sitios, a mano, es justo el tipo de tarea recurrente que un panel existe para eliminar.
Hacerlo a mano es engorroso — automatízalo
Cablear certbot, elegir el reto correcto, abrir el puerto 80, programar un cron de renovación, hacer que recargue nginx, y vigilar que las renovaciones tengan éxito de verdad — para cada dominio, para siempre — son muchas piezas móviles que mantener correctas. Ese es el trabajo repetitivo y fácil de olvidar que un panel debería asumir.
ShadowPanel convierte el SSL en un no-evento:
- Emisión en un clic. Apunta un dominio a tu servidor y emítele un certificado Let's Encrypt gratuito — el panel ejecuta certbot, gestiona el reto y recarga nginx para que el HTTPS esté activo de inmediato.
- Renovación automática, vigilada. Un worker programado comprueba a diario y renueva cualquier certificado a menos de 30 días de caducar — mucho antes de la fecha límite. Limpia los bloqueos de certbot obsoletos antes de cada ejecución, para que un archivo de bloqueo residual no pueda impedir la renovación en silencio, y registra los fallos en lugar de fallar sin avisar.
- Soporte wildcard para
*.tudominiomediante validación DNS, para que cada subdominio quede cubierto por un solo certificado. - Gratis en todos los niveles. El SSL no es un extra de pago — cada sitio que alojas obtiene HTTPS cifrado sin coste adicional, incluido en el nivel gratuito.
El resultado: emites una vez, y la renovación simplemente nunca se convierte en tu problema. Esa fiabilidad importa más cuando alojas muchos sitios — consulta alojar varios sitios de clientes en un solo VPS, donde un certificado caducado es un cliente descontento.
En resumen
El SSL gratis ya no es el logro — Let's Encrypt lo resolvió en 2016. El trabajo real es renovar un certificado de 90 días para cada sitio, para siempre, y saber cuándo falla una renovación antes que tus visitantes. Entiende los dos retos ACME, mantén sano el puerto 80 (o tus registros DNS) y, sobre todo, automatiza la renovación con vigilancia. ShadowPanel hace todo eso por defecto, gratis en todos los niveles, para que el HTTPS sea algo que configuras una vez y en lo que no vuelves a pensar.
curl -fsSL https://shadowpanel.de/install.sh | bash