Let's Encrypt es una Autoridad Certificadora (CA) gratuita, automática y de código abierto operada por la Internet Security Research Group (ISRG). Emite certificados SSL/TLS de validación de dominio (DV) sin coste alguno, con renovación automática cada 90 días mediante el protocolo ACME (Automatic Certificate Management Environment). En 2026, Let's Encrypt protege más de 500 millones de sitios web activos y es la Autoridad Certificadora con más certificados emitidos del mundo. Su creación en 2014 fue el punto de inflexión que convirtió HTTPS en el estándar universal de la web: antes de Let's Encrypt, menos del 30% del tráfico web usaba HTTPS; hoy supera el 95%.

Qué es una Autoridad Certificadora y por qué importa

Para entender Let's Encrypt, primero hay que entender qué es una Autoridad Certificadora (CA, Certificate Authority) y qué papel juega en el ecosistema HTTPS.

Cuando tu navegador se conecta a un sitio HTTPS, el servidor le presenta un certificado SSL/TLS que contiene su clave pública y la información del dominio. El navegador necesita verificar que ese certificado es auténtico, es decir, que el servidor es realmente quien dice ser y no un impostor. Para hacer esa verificación, el navegador comprueba que el certificado está firmado digitalmente por una Autoridad Certificadora en la que confía.

Los navegadores tienen preinstalada una lista de CAs de confianza (llamada "root store" o "almacén de certificados raíz"). Solo los certificados firmados por esas CAs (directamente o a través de CAs intermedias que ellas a su vez firman) son reconocidos como válidos. Si un servidor presenta un certificado firmado por una CA que no está en la lista del navegador, el navegador muestra una advertencia de seguridad y bloquea el acceso.

Let's Encrypt está incluida en el almacén de certificados raíz de todos los navegadores modernos (Chrome, Firefox, Safari, Edge, Opera) y de todos los sistemas operativos modernos (Windows, macOS, Linux, Android, iOS), lo que significa que sus certificados son reconocidos como válidos en prácticamente cualquier dispositivo conectado a internet.

Historia de Let's Encrypt: cómo nació

En 2012, Josh Aas y Eric Rescorla, dos ingenieros de Mozilla, observaron que la adopción de HTTPS era muy baja a pesar de que su importancia para la seguridad de la web era indiscutible. La barrera principal era el proceso de obtención de un certificado SSL: costoso (entre 50 y varios cientos de euros anuales), manual (requería documentación y días de espera) y técnicamente complejo (la instalación requería conocimientos de administración de servidores).

En 2013, Aas cofundó la Internet Security Research Group (ISRG) con el objetivo de crear una CA gratuita y automatizada. En 2014, Mozilla, la EFF, Cisco y Akamai anunciaron públicamente el proyecto Let's Encrypt. El 12 de abril de 2016, Let's Encrypt salió de beta y emitió su primer millón de certificados. En enero de 2018 comenzó a emitir certificados wildcard. En febrero de 2020, Let's Encrypt alcanzó los mil millones de certificados emitidos acumulados.

El protocolo ACME: la clave de la automatización

La innovación técnica que hace posible Let's Encrypt es el protocolo ACME (Automatic Certificate Management Environment), estandarizado en el RFC 8555 en marzo de 2019. ACME es un protocolo de comunicación entre un cliente (como Certbot) y la CA (Let's Encrypt) que automatiza completamente el proceso de:

  1. Verificar que el solicitante controla el dominio para el que pide el certificado.
  2. Emitir el certificado una vez verificado el control del dominio.
  3. Revocar el certificado si es necesario.
  4. Renovar el certificado automáticamente antes de que caduque.

Todo este proceso, que con una CA tradicional podía tardar días e implicar intercambios de email y envío de documentación, ACME lo completa en segundos de forma completamente automatizada y sin intervención humana.

La importancia del RFC 8555 es que ACME es ahora un estándar abierto implementado no solo por Let's Encrypt sino también por otras CAs y por paneles de control de hosting como Plesk, cPanel y DirectAdmin, lo que ha normalizado la gestión automatizada de certificados SSL en toda la industria del hosting.

Cómo funciona el protocolo ACME paso a paso

El proceso de obtención de un certificado mediante ACME funciona así:

Paso 1: El cliente ACME se registra con Let's Encrypt

El cliente ACME (Certbot, acme.sh, Plesk, o cualquier cliente compatible) genera un par de claves (pública y privada) y se registra con los servidores ACME de Let's Encrypt usando la clave pública. Esta clave identifica la cuenta de forma única y firma todas las solicitudes posteriores.

Paso 2: El cliente solicita autorización para un dominio

El cliente le dice a Let's Encrypt: "Quiero obtener un certificado para tudominio.com". Let's Encrypt responde con uno o varios "challenges" (desafíos) que el cliente debe completar para demostrar que controla ese dominio.

Paso 3: El cliente completa el desafío de validación

Hay dos tipos principales de desafíos (ver la siguiente sección para los detalles). Una vez completado el desafío, el cliente notifica a Let's Encrypt que ya puede verificarlo.

Paso 4: Let's Encrypt verifica el desafío

Los servidores de Let's Encrypt realizan la verificación automática (acceden a la URL del desafío HTTP o consultan el registro DNS TXT). Si la verificación es exitosa, el dominio queda autorizado.

Paso 5: El cliente solicita el certificado

Con el dominio autorizado, el cliente envía una CSR (Certificate Signing Request) firmada con su clave. Let's Encrypt emite el certificado DV firmado y lo devuelve al cliente.

Paso 6: El cliente instala el certificado

El cliente instala el certificado en el servidor web (Apache, Nginx) y configura las rutas correctas. Certbot hace esto automáticamente.

Paso 7: Renovación automática

Un cron job o un systemd timer ejecuta periódicamente certbot renew, que comprueba si algún certificado va a caducar en los próximos 30 días y, si es así, repite el proceso de autorización y emisión de forma completamente automática, sin ninguna intervención manual.

Los métodos de validación de ACME

Para verificar que el solicitante controla el dominio, ACME ofrece varios métodos de validación (challenges). Los dos más usados son HTTP-01 y DNS-01:

HTTP-01 challenge: validación por archivo web

Es el método más sencillo y el más usado. Let's Encrypt pide al cliente que coloque un archivo con un token específico en una ruta concreta del servidor web:

# La ruta donde debe aparecer el archivo:
http://tudominio.com/.well-known/acme-challenge/TOKEN

# El contenido del archivo es el token + una huella de la clave de la cuenta:
TOKEN.THUMBPRINT_DE_LA_CLAVE_DE_CUENTA

# Certbot hace esto automáticamente al ejecutar:
sudo certbot --nginx -d tudominio.com
# o
sudo certbot --apache -d tudominio.com

Una vez colocado el archivo, Let's Encrypt accede a esa URL desde sus servidores y verifica que el contenido es correcto. Si lo es, el dominio queda validado.

AspectoDetalle del HTTP-01 challenge
Cómo funcionaLet's Encrypt accede a una URL específica en el puerto 80 del dominio y verifica el contenido del archivo
RequisitosEl servidor debe ser accesible desde internet en el puerto 80; el dominio debe resolver a la IP del servidor
VelocidadMuy rápido: se completa en segundos
AutomatizaciónCompletamente automática con Certbot y plugins de servidor web
LimitacionesNo funciona para certificados wildcard; requiere que el puerto 80 esté abierto; no funciona en servidores no accesibles desde internet
Ideal paraLa mayoría de sitios web con un único dominio o subdominios específicos

DNS-01 challenge: validación por registro DNS

En lugar de un archivo web, Let's Encrypt pide que se cree un registro DNS TXT específico en la zona DNS del dominio:

# El registro DNS TXT que debe crearse:
_acme-challenge.tudominio.com.  IN  TXT  "TOKEN_DE_VALIDACION"

# Con Certbot en modo manual (requiere intervención):
sudo certbot certonly --manual --preferred-challenges dns -d tudominio.com

# Con Certbot usando un plugin de DNS (completamente automático):
# Para Cloudflare:
sudo apt install python3-certbot-dns-cloudflare
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/cloudflare.ini -d tudominio.com -d *.tudominio.com
AspectoDetalle del DNS-01 challenge
Cómo funcionaLet's Encrypt consulta el registro DNS TXT _acme-challenge.tudominio.com y verifica el valor
RequisitosAcceso a la gestión de DNS del dominio (directamente o a través de la API del proveedor DNS)
VelocidadMás lento que HTTP-01: depende de la propagación DNS (puede tardar entre 1 y 5 minutos)
AutomatizaciónAutomática con plugins DNS de Certbot (Cloudflare, Route53, DigitalOcean, etc.); manual sin plugins
LimitacionesRequiere acceso a la API del proveedor DNS para automatización completa
Ideal paraCertificados wildcard (*.tudominio.com); servidores internos no accesibles desde internet; entornos donde el puerto 80 está bloqueado

Cuándo usar DNS-01: el método DNS-01 es el único que permite obtener certificados wildcard (*.tudominio.com), que cubren automáticamente todos los subdominios del dominio. Si tienes múltiples subdominios o si añades subdominios con frecuencia, un certificado wildcard con DNS-01 es la opción más eficiente.

Por qué los certificados de Let's Encrypt duran 90 días

Los certificados de Let's Encrypt tienen una validez de 90 días, significativamente más corta que los 1-2 años habituales en certificados de pago. Esta decisión fue deliberada y tiene razones de seguridad sólidas:

  1. Limita el daño si una clave privada se compromete: si alguien roba la clave privada del servidor, el daño está limitado a 90 días como máximo. Con certificados de 2 años, una clave comprometida puede ser usada maliciosamente durante mucho más tiempo.
  2. Fuerza la automatización desde el principio: 90 días es demasiado corto para gestionar manualmente de forma sostenida. Let's Encrypt diseñó intencionalmente este período corto para obligar a los operadores a configurar la renovación automática desde el inicio.
  3. Reduce la ventana de uso de certificados con algoritmos obsoletos: si se descubre una vulnerabilidad en un algoritmo de cifrado, los certificados con ese algoritmo caducan y se reemplazan en 90 días máximo, en lugar de esperar hasta 2 años.

En la práctica, el período de 90 días es completamente transparente para el operador del sitio: Certbot y Plesk renuevan automáticamente el certificado cuando quedan 30 días para la caducidad, sin ninguna intervención manual y sin que los visitantes del sitio experimenten ningún cambio.

Let's Encrypt vs certificados SSL de pago: comparativa completa

CaracterísticaLet's EncryptDV de pago (Sectigo, DigiCert...)OV de pagoEV de pago
Coste anual0€10€ - 100€50€ - 300€200€ - 1.000€+
Nivel de validaciónDV: solo verifica el control del dominioDV: solo el dominioOV: dominio + identidad de la organizaciónEV: validación extendida completa
Nombre de la organización en el certificadoNoNoSí (con validación rigurosa)
Cifrado criptográficoTLS 1.3, RSA 2048 o ECDSA P-256IgualIgualIgual
Confianza en navegadores100%100%100%100%
Validez del certificado90 días (renovación automática)1-2 años1-2 años1-2 años
Tiempo de emisiónSegundosMinutos a horas1-3 días laborables1-2 semanas
Certificados wildcardSí (con DNS-01)Sí (coste adicional)Sí (coste adicional)No (EV no soporta wildcard)
Soporte técnico de la CANo (solo foros y documentación)Sí (email y chat)Sí (prioritario)Sí (dedicado)
Garantía económica de la CANo10.000$ - 1.750.000$100.000$ - 1.750.000$1.000.000$ - 1.750.000$
Ideal paraLa gran mayoría de sitios webSitios que quieren renovación anual manualEmpresas que necesitan mostrar su identidadBanca, e-commerce de alto valor

Los límites de emisión de Let's Encrypt

Let's Encrypt tiene límites de emisión para prevenir abusos y garantizar la estabilidad del servicio. Para la mayoría de los usos, estos límites son muy generosos:

LímiteValorCuándo puede afectarte
Certificados por dominio registrado por semana50Solo si emites muchos certificados para el mismo dominio registrado (por ejemplo, muchos subdominios)
Certificados duplicados por semana5Si intentas emitir el mismo certificado (mismo conjunto de dominios) más de 5 veces en una semana
Intentos de validación fallidos por dominio por hora5Si hay problemas de configuración que causan fallos repetidos de validación
Nuevas cuentas por IP por período10 por 3 horasSolo relevante en entornos de hosting con muchas cuentas por IP

Error frecuente que activa el límite de duplicados: si estás probando la instalación y emites el mismo certificado varias veces porque algo no funciona, puedes alcanzar el límite de 5 duplicados en una semana. Let's Encrypt tiene un entorno de pruebas (staging) exactamente para esto. Úsalo durante las pruebas: sudo certbot --nginx --staging -d tudominio.com. Los certificados del staging no son válidos en navegadores, pero el proceso de verificación es idéntico al de producción.

Clientes ACME: más allá de Certbot

Certbot es el cliente ACME oficial recomendado por Let's Encrypt, pero existen decenas de implementaciones alternativas para diferentes entornos y necesidades:

Cliente ACMELenguaje/PlataformaCaracterísticas destacadasIdeal para
CertbotPythonCliente oficial, plugins para Apache y Nginx, amplia documentaciónLa mayoría de servidores Linux
acme.shBash (shell script)Sin dependencias externas, más de 150 proveedores DNS soportados, muy ligeroAdministradores que prefieren shell scripts; entornos minimalistas
CaddyGo (servidor web)Servidor web que gestiona ACME de forma nativa y automática, sin configuración adicionalNuevos proyectos donde se puede elegir el servidor web
TraefikGo (proxy inverso)Proxy inverso para Docker/Kubernetes con gestión ACME integradaEntornos containerizados con Docker o Kubernetes
win-acmeC# (.NET)Cliente nativo para Windows con integración en IISServidores Windows con IIS
Plesk (integrado)Panel de controlLet's Encrypt integrado en la interfaz de Plesk, renovación automática sin SSHServidores de hosting con Plesk (como sys4net)

Cómo funciona la renovación automática

La renovación automática es uno de los aspectos más importantes de Let's Encrypt y la razón por la que el período corto de 90 días no es un inconveniente en la práctica.

Cuando instalas Certbot, el instalador configura automáticamente un systemd timer (o un cron job en sistemas más antiguos) que ejecuta certbot renew dos veces al día, típicamente a las 00:00 y las 12:00 UTC. Certbot comprueba todos los certificados instalados y renueva los que van a caducar en menos de 30 días:

# Ver el estado del timer de renovación automática de Certbot:
sudo systemctl status certbot.timer
sudo systemctl list-timers | grep certbot

# Ver el log de renovaciones pasadas:
sudo journalctl -u certbot

# Ver cuándo caducan los certificados instalados:
sudo certbot certificates

# Ejemplo de salida de certbot certificates:
# Found the following certs:
#   Certificate Name: tudominio.com
#     Domains: tudominio.com www.tudominio.com
#     Expiry Date: 2026-09-01 10:30:00+00:00 (VALID: 87 days)
#     Certificate Path: /etc/letsencrypt/live/tudominio.com/fullchain.pem
#     Private Key Path: /etc/letsencrypt/live/tudominio.com/privkey.pem

# Simular una renovación (sin ejecutarla realmente) para verificar que funciona:
sudo certbot renew --dry-run

# La salida debe terminar con:
# Congratulations, all simulated renewals succeeded:

En Plesk, la renovación automática está configurada de forma nativa y visible desde el panel de control en SSL/TLS Certificates. Plesk muestra la fecha de caducidad del certificado y el estado de la renovación automática de cada dominio.

Solución de problemas frecuentes con Let's Encrypt

Error: "too many certificates already issued for exact set of domains"

Has superado el límite de 5 certificados duplicados por semana. Espera una semana antes de volver a intentarlo. Mientras tanto, usa el entorno de staging para seguir probando: sudo certbot --staging -d tudominio.com.

Error: "Connection refused" o "Timeout during connect"

Let's Encrypt no puede acceder al puerto 80 de tu servidor para completar el HTTP-01 challenge. Verifica que el firewall no bloquea el puerto 80 y que el servidor web está ejecutándose y escuchando en ese puerto:

# Verificar que el puerto 80 está abierto y accesible:
sudo ufw status | grep "80"
sudo ss -tlnp | grep :80

# Verificar que el servidor web responde en el puerto 80:
curl -I http://tudominio.com

# Si usas Cloudflare: asegúrate de que el DNS de Certbot
# apunta a la IP real del servidor, no a los proxies de Cloudflare.
# Desactiva temporalmente el proxy de Cloudflare (nube naranja → gris)
# durante la emisión del certificado.

Error: "NXDOMAIN looking up A for _acme-challenge"

El dominio DNS del challenge no resuelve. En el DNS-01 challenge, el registro TXT _acme-challenge.tudominio.com no existe o aún no se ha propagado. Espera a que la propagación DNS sea completa (puede tardar hasta 5 minutos) y vuelve a intentarlo.

Certificado instalado pero el navegador muestra "No seguro"

El certificado está instalado pero hay contenido mixto: recursos (imágenes, CSS, JS) que se cargan por HTTP en lugar de HTTPS. Revisa la consola del navegador (F12 > Console) para ver exactamente qué recursos generan el aviso de contenido mixto y actualiza sus URLs a HTTPS.

Let's Encrypt en Plesk: gestión sin línea de comandos

En los servidores de sys4net, que usan Plesk como panel de control, Let's Encrypt está completamente integrado y no requiere ningún conocimiento de línea de comandos para instalarlo y gestionarlo:

  1. Accede al panel de Plesk con tus credenciales.
  2. Ve a Websites y Dominios y selecciona el dominio que quieres asegurar.
  3. Haz clic en SSL/TLS Certificates.
  4. En la sección "Let's Encrypt", haz clic en Instalar.
  5. Marca las opciones que necesites: incluir www, incluir el webmail, incluir el servidor de correo.
  6. Haz clic en Obtener de forma gratuita.

Plesk instalará el certificado, configurará la redirección automática de HTTP a HTTPS y programará la renovación automática. Todo en menos de un minuto y sin tocar ningún archivo de configuración del servidor.

Preguntas frecuentes sobre Let's Encrypt

¿Let's Encrypt es tan seguro como un certificado SSL de pago?

Sí, en términos de seguridad criptográfica. Los certificados de Let's Encrypt usan los mismos algoritmos de cifrado (TLS 1.3, RSA 2048 o ECDSA P-256) que los certificados de pago más caros. El cifrado de la comunicación es exactamente el mismo. La diferencia no está en la seguridad del cifrado sino en el nivel de validación: Let's Encrypt solo verifica el control del dominio (DV), mientras que los certificados OV y EV verifican también la identidad legal de la organización. Para la gran mayoría de sitios web, el nivel DV es completamente adecuado.

¿Por qué el certificado de Let's Encrypt dura solo 90 días y no un año como los de pago?

La duración de 90 días es una decisión de diseño deliberada de Let's Encrypt con tres objetivos: limitar el daño potencial si una clave privada se compromete (máximo 90 días de exposición), forzar la automatización de la renovación desde el principio (90 días es demasiado corto para gestionar manualmente de forma sostenida), y reducir la ventana de uso de certificados con algoritmos que podrían volverse obsoletos. En la práctica, con Certbot o Plesk correctamente configurados, la renovación es completamente automática y transparente: ni el operador ni los visitantes del sitio notan nada.

¿Puede Let's Encrypt emitir certificados wildcard?

Sí, desde marzo de 2018. Los certificados wildcard de Let's Encrypt (*.tudominio.com) cubren todos los subdominios de primer nivel del dominio y se emiten usando el método de validación DNS-01, que requiere crear un registro TXT en la zona DNS del dominio. A diferencia del HTTP-01 challenge, el DNS-01 se puede automatizar completamente usando plugins de Certbot que se integran con las APIs de los principales proveedores DNS (Cloudflare, Route53, DigitalOcean, Namecheap, y muchos más).

¿Qué pasa si la renovación automática falla y el certificado caduca?

Si el certificado caduca, los navegadores muestran una advertencia de seguridad que impide el acceso al sitio para la mayoría de los usuarios, lo que tiene un impacto inmediato y grave en el tráfico. Let's Encrypt envía avisos por email (al email asociado a la cuenta ACME) cuando un certificado va a caducar en 20 días y de nuevo en 7 días sin renovar, para alertar al operador con tiempo suficiente de corregir el problema. En Plesk, el panel también muestra alertas visuales cuando un certificado está próximo a caducar.

¿Puedo usar Let's Encrypt en un servidor local o de desarrollo?

Not directamente. Let's Encrypt necesita verificar que controlas el dominio accediendo públicamente al servidor (HTTP-01) o consultando el DNS público del dominio (DNS-01). Para servidores locales o de desarrollo que no son accesibles desde internet, la única opción de Let's Encrypt es el DNS-01 challenge si el dominio tiene un DNS público. Alternativas para entornos de desarrollo local son mkcert (genera certificados autofirmados de confianza local), o el entorno de staging de Let's Encrypt para pruebas con un dominio real accesible.

¿Cuántos certificados puedo obtener con Let's Encrypt?

El límite principal es de 50 certificados por dominio registrado (el dominio de segundo nivel, como tudominio.com) por semana. Esto es más que suficiente para la gran mayoría de los casos. Si tienes muchos subdominios, un certificado wildcard (*.tudominio.com) cuenta como uno solo y cubre todos los subdominios ilimitados. Solo en casos de hosting masivo con miles de dominios distintos se acercan a los límites de emisión de Let's Encrypt, y en esos casos existen procedimientos para solicitar un aumento de límites.