HTTP-01 es el tipo de desafío ACME más común para obtener un certificado SSL. La CA verifica que controlas un dominio recuperando un archivo específico de tu servidor web a través del puerto HTTP 80. Es más simple que DNS-01 pero no se puede usar para certificados comodín.
Cómo funciona
- Let’s Encrypt te da un token (una cadena aleatoria)
- Creas un archivo en
http://tudominio.com/.well-known/acme-challenge/{token} - El contenido del archivo es la autorización de clave — el token combinado con la huella digital de tu clave de cuenta ACME
- Let’s Encrypt recupera esta URL desde la internet pública
- Si el contenido coincide, el desafío se aprueba y tu certificado se emite
Con GetHTTPS, los pasos 1 y 3 se manejan automáticamente; solo necesitas colocar el archivo en tu servidor con los valores que se muestran en pantalla.
Cómo colocar el archivo del desafío
Vía SSH (Linux/Nginx/Apache)
# Crear el directorio
mkdir -p /var/www/html/.well-known/acme-challenge/
# Crear el archivo con los valores exactos de GetHTTPS
echo "KEY_AUTHORIZATION_FROM_GETHTTPS" > /var/www/html/.well-known/acme-challenge/TOKEN_FROM_GETHTTPS
# Verificar que es accesible
curl http://yourdomain.com/.well-known/acme-challenge/TOKEN_FROM_GETHTTPS
Vía Administrador de archivos de cPanel
- Navega a
public_html - Crea la carpeta
.well-known→ dentro de ella, crea la carpetaacme-challenge - Crea un nuevo archivo con el nombre del valor del token
- Pega la autorización de clave como contenido del archivo
- Asegúrate de que los permisos sean 644 (legible por el servidor web)
Vía FTP
- Conéctate a la raíz de tu sitio
- Crea la ruta de directorio
.well-known/acme-challenge/ - Sube un archivo de texto con el nombre del token, que contenga la autorización de clave
Configuración del servidor
Algunos servidores web necesitan configuración para servir archivos desde .well-known:
Nginx
# Añade a tu bloque server si .well-known devuelve 404
location /.well-known/acme-challenge/ {
root /var/www/html;
allow all;
}
Apache
Apache generalmente sirve .well-known por defecto. Si no:
Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/
<Directory "/var/www/html/.well-known/acme-challenge/">
AllowOverride None
Options None
Require all granted
</Directory>
Node.js / Express
app.use('/.well-known/acme-challenge', express.static('challenges'));
Requisitos
- El dominio debe resolver a una dirección IP pública donde esté tu servidor
- El puerto 80 debe estar abierto — Let’s Encrypt siempre valida sobre HTTP, no HTTPS
- La respuesta debe devolver HTTP 200 OK
- Sin redirecciones entre dominios — las redirecciones HTTP→HTTPS del mismo dominio están permitidas
- El archivo debe ser accesible sin autenticación (sin Basic Auth, sin muro de login)
Cuándo usar HTTP-01
| Escenario | ¿HTTP-01? |
|---|---|
| Certificado de dominio único | ✅ Sí — la opción más simple |
| Certificado de dominio + www | ✅ Sí — un desafío por nombre |
Certificado comodín (*.example.com) | ❌ No — usa DNS-01 |
| Puerto 80 bloqueado | ❌ No — usa DNS-01 |
| Detrás de proxy Cloudflare | ⚠️ Puede necesitar poner DNS en nube gris primero |
| Sin acceso al servidor | ❌ No — usa DNS-01 (solo necesita acceso DNS) |
HTTP-01 vs DNS-01
| HTTP-01 | DNS-01 | |
|---|---|---|
| Qué haces | Colocar un archivo en tu servidor | Añadir un registro TXT en DNS |
| Acceso necesario | Sistema de archivos del servidor web | Configuración DNS del dominio |
| Requisito de puerto | Puerto 80 abierto | Ninguno |
| Soporte de comodines | ❌ | ✅ |
| Velocidad | Instantáneo (si el archivo es accesible) | 1-15 min (propagación DNS) |
| Funciona detrás de CDN | ⚠️ Puede necesitar bypass del CDN | ✅ Siempre funciona |
| Ideal para | La mayoría de certificados de dominio único | Comodines, sin acceso al servidor, configuraciones con CDN |
Solución de problemas
El archivo del desafío devuelve 404
- Verifica la ruta exacta — debe ser
/.well-known/acme-challenge/TOKENsin barras extra - Verifica los permisos del archivo — chmod 644
- Nginx: Tu configuración puede bloquear archivos con punto. Añade el bloque
locationmostrado arriba - cPanel: El administrador de archivos puede ocultar
.well-known— activa «Mostrar archivos ocultos»
El desafío falla a pesar de que el archivo es accesible
- Verifica desde fuera de tu red:
curl http://tudominio.com/.well-known/acme-challenge/TOKENdesde otra máquina o usa una herramienta web - El DNS puede apuntar a un servidor diferente — verifica que
dig +short tudominio.comdevuelve la IP de tu servidor - Proxy de Cloudflare: Cambia temporalmente a DNS-only (nube gris) durante la validación
El puerto 80 está bloqueado
Algunos hosts o firewalls bloquean el puerto 80. Opciones:
- Abre el puerto 80 (aunque sea temporalmente para la validación)
- Cambia al desafío DNS-01 — no necesita el puerto 80
- Pide a tu proveedor de hosting que permita
.well-knowna través de su proxy
Error de «too many requests»
Has alcanzado los límites de tasa de Let’s Encrypt. Espera y reintenta. La pre-verificación de GetHTTPS ayuda a evitar intentos desperdiciados verificando que el archivo es accesible antes de enviar.
Preguntas frecuentes
¿Puedo eliminar el archivo del desafío después de obtener el certificado?
Sí. El archivo solo se necesita durante la validación. Una vez que tu certificado se emite, elimina el directorio .well-known/acme-challenge/ y su contenido. Crearás nuevos archivos cuando renueves.
¿El archivo necesita servirse por HTTPS?
No. Let’s Encrypt siempre valida HTTP-01 por HTTP simple (puerto 80), incluso si tu sitio soporta HTTPS. Las redirecciones HTTP→HTTPS del mismo dominio se siguen, pero la solicitud inicial siempre es HTTP.
¿Puedo usar HTTP-01 para múltiples dominios en un certificado?
Sí. Cada dominio en el certificado necesita su propio archivo de desafío. Si estás obteniendo un certificado para example.com y www.example.com, colocas dos archivos: un token por dominio. GetHTTPS los maneja secuencialmente.
¿Qué es la «pre-verificación» en GetHTTPS?
Antes de enviar a Let’s Encrypt, GetHTTPS verifica que tu archivo de desafío es accesible desde la internet pública (vía DNS-over-HTTPS de Google). Esto detecta errores de configuración antes de gastar un intento de límite de tasa, una función que otras herramientas basadas en navegador no tienen.