DNS-01 es el tipo de desafío ACME que soporta certificados comodín (*.example.com). Demuestra la propiedad del dominio añadiendo un registro TXT a tu DNS, sin necesidad de servidor web ni acceso al puerto 80.
Cómo funciona
- Let’s Encrypt proporciona un token para cada dominio
- GetHTTPS calcula un digest SHA-256 de la autorización de clave y lo codifica en base64url
- Creas un registro TXT en
_acme-challenge.tudominio.comcon este valor - Let’s Encrypt consulta el DNS público en busca del registro TXT
- Si el valor coincide, el desafío se aprueba y se emite el certificado
Con GetHTTPS, los pasos 1-2 son automáticos: solo necesitas copiar y pegar el nombre del registro y el valor en tu proveedor DNS.
Configuración paso a paso
Paso 1: Obtener los datos del registro TXT de GetHTTPS
GetHTTPS te muestra:
- Nombre del registro:
_acme-challenge.tudominio.com - Valor del registro: una cadena codificada en base64url (~43 caracteres)
Paso 2: Añadir el registro TXT en tu proveedor DNS
| Campo | Valor |
|---|---|
| Tipo | TXT |
| Nombre | _acme-challenge (algunos proveedores añaden automáticamente el dominio) |
| Valor | La cadena que muestra GetHTTPS — cópiala y pégala exactamente |
| TTL | 60 segundos (o el mínimo que permita tu proveedor) |
Instrucciones específicas por proveedor:
Cloudflare
- Dashboard → tu dominio → DNS → Records → Add record
- Type: TXT, Name:
_acme-challenge, Content: pega el valor - TTL: Auto
- Haz clic en Save
AWS Route 53
- Hosted zones → tu dominio → Create record
- Record name:
_acme-challenge - Record type: TXT
- Value:
"pega-el-valor-aquí"(incluye las comillas dobles — Route 53 las requiere) - TTL: 300
- Haz clic en Create records
GoDaddy
- DNS Management → Add
- Type: TXT, Name:
_acme-challenge, Value: pega el valor - TTL: 1 Hour (el mínimo disponible)
- Haz clic en Save
Namecheap
- Domain List → Manage → Advanced DNS → Add new record
- Type: TXT, Host:
_acme-challenge, Value: pega el valor - TTL: Automatic
- Haz clic en Save all changes
Google Cloud DNS
gcloud dns record-sets create _acme-challenge.yourdomain.com. \
--zone=your-zone --type=TXT --ttl=60 --rrdatas="the-value"
DigitalOcean
- Networking → Domains → tu dominio → Add record
- Type: TXT, Hostname:
_acme-challenge, Value: pega el valor - TTL: 30
Paso 3: Esperar la propagación DNS
Los cambios DNS tardan de 1 a 15 minutos dependiendo de tu proveedor y la configuración de TTL. La pre-verificación de GetHTTPS verifica que el registro TXT es visible desde la internet pública antes de enviar a Let’s Encrypt.
Verificar la propagación manualmente:
dig TXT _acme-challenge.yourdomain.com +short
# Debería devolver tu valor (entre comillas)
O usa un verificador de propagación en línea para ver si el registro es visible globalmente.
Paso 4: Verificar en GetHTTPS
Haz clic en Verify. GetHTTPS envía el desafío a Let’s Encrypt. Si el registro TXT es correcto, se emite el certificado.
Paso 5: Limpiar
Después de emitir el certificado, elimina el registro TXT _acme-challenge de tu DNS. Ya no es necesario y dejar registros obsoletos puede causar confusión durante la renovación.
Certificados comodín con DNS-01
Para obtener un certificado para *.tudominio.com, debes usar DNS-01. HTTP-01 no puede validar comodines porque un comodín cubre nombres de host infinitos; no hay un solo servidor donde colocar un archivo.
Comodín + dominio raíz: Si quieres tanto *.example.com como example.com, GetHTTPS puede requerir dos validaciones. Algunas configuraciones necesitan dos registros TXT en _acme-challenge.example.com simultáneamente: uno para el comodín, otro para el apex. Mantén ambos registros hasta que la validación se apruebe.
Guía completa de certificados comodín →
DNS-01 vs HTTP-01
| DNS-01 | HTTP-01 | |
|---|---|---|
| Qué haces | Añadir un registro TXT en DNS | Colocar un archivo en tu servidor |
| Acceso necesario | Configuración DNS del dominio | Sistema de archivos del servidor web |
| Requisito de puerto | Ninguno | El puerto 80 debe estar abierto |
| Soporte de comodines | ✅ Requerido para comodines | ❌ |
| Funciona sin servidor | ✅ | ❌ |
| Velocidad | 1-15 min (propagación DNS) | Instantáneo (si el archivo es accesible) |
| Funciona detrás de CDN | ✅ Siempre | ⚠️ Puede necesitar bypass del CDN |
| Ideal para | Comodines, sin servidor, configuraciones con CDN | La mayoría de los certificados de dominio único |
Elige DNS-01 cuando: necesitas un comodín, el puerto 80 está bloqueado, tu servidor no es accesible públicamente o estás detrás de un CDN.
Elige HTTP-01 cuando: tienes un servidor web, el puerto 80 está abierto y no necesitas un comodín. Es más rápido (sin espera de propagación).
Solución de problemas
GetHTTPS no encuentra el registro TXT
- Espera más — algunos proveedores tardan 5-15 minutos. Un TTL bajo ayuda pero no elimina el tiempo de propagación.
- Revisa el nombre del registro: Algunos proveedores añaden automáticamente el dominio. Si introduces
_acme-challenge.example.comy el proveedor añade.example.com, el registro real se convierte en_acme-challenge.example.com.example.com(incorrecto). Introduce solo_acme-challengey deja que el proveedor lo añada. - Verifica manualmente:
Si esto devuelve vacío, el registro aún no se ha propagado.dig TXT _acme-challenge.yourdomain.com +short
Valor incorrecto / diferencia de mayúsculas
- El valor es sensible a mayúsculas y minúsculas. Copia y pega directamente desde GetHTTPS; no lo reescribas.
- No añadas comillas a menos que tu proveedor DNS las requiera (Route 53 sí, la mayoría no).
Conflicto con múltiples registros TXT
- Elimina los registros TXT
_acme-challengeantiguos de intentos previos antes de añadir nuevos. - Excepción: la validación de comodín + apex puede necesitar dos registros con el mismo nombre simultáneamente.
El proveedor DNS no soporta registros TXT
Raro, pero algunos servicios DNS básicos no tienen soporte TXT. Cambia a un proveedor DNS con todas las funciones (el plan gratuito de Cloudflare soporta todos los tipos de registro).
Cuándo usar DNS-01
| Escenario | ¿DNS-01? |
|---|---|
Certificado comodín (*.example.com) | ✅ Requerido |
| Puerto 80 bloqueado | ✅ Mejor opción |
| Servidor en red interna | ✅ Única opción |
| Detrás de proxy Cloudflare/CDN | ✅ Evita problemas con el proxy |
| Dominio sin servidor (parking, redirección) | ✅ Única opción |
| Certificado simple de dominio único con acceso al servidor | ⚠️ HTTP-01 es más rápido |
Preguntas frecuentes
¿Puedo automatizar los desafíos DNS-01?
Sí, con herramientas CLI. acme.sh tiene integraciones de API incorporadas para más de 150 proveedores DNS: puede añadir y eliminar registros TXT automáticamente. Certbot soporta plugins DNS para los principales proveedores. GetHTTPS requiere cambios DNS manuales (basado en navegador, sin llamadas API).
¿Es seguro darle mi clave API DNS a un cliente ACME?
La clave API tiene acceso de escritura a tu zona DNS, así que trátala con la misma seguridad que las credenciales de tu servidor. Usa tokens API con alcance limitado cuando sea posible (por ejemplo, los tokens por zona de Cloudflare). Para máxima seguridad, usa GetHTTPS con cambios DNS manuales; sin claves API involucradas.
¿Cuánto tiempo necesito mantener el registro TXT?
Solo durante la validación, típicamente unos minutos. Una vez que tu certificado se emite, elimina el registro. Crearás uno nuevo con un valor nuevo cuando renueves.
¿Qué pasa si mi proveedor DNS es lento en propagar?
Configura el TTL lo más bajo que tu proveedor permita (idealmente 60 segundos). Si la propagación tarda más de 15 minutos, verifica que no haya errores tipográficos en el nombre/valor del registro, o prueba un proveedor DNS diferente. Cloudflare propaga registros TXT en segundos.
¿Funciona DNS-01 con el proxy de Cloudflare (nube naranja)?
Sí. La validación DNS-01 consulta el registro TXT vía DNS, no HTTP, así que el estado del proxy de Cloudflare (nube naranja vs gris) no importa. Esta es una ventaja clave sobre HTTP-01, que puede ser bloqueado por el proxy.