In breve
HTTP-01 è lo standard semplice per web server pubblici con la porta 80 aperta. DNS-01 ti serve per certificati wildcard, host interni senza accesso web pubblico e setup con più server dietro un load balancer.
| Criterio | HTTP-01 | DNS-01 |
|---|---|---|
| Prova tramite | File in /.well-known/acme-challenge/ via HTTP | Record TXT _acme-challenge.<dominio> |
| Certificati wildcard | Non possibili | Possibili, solo con DNS-01 |
| Requisito | Porta 80 raggiungibile da internet, A/AAAA puntano al server | Accesso in scrittura alla zona DNS, di solito via API |
| Host interni | Solo se raggiungibili pubblicamente sulla porta 80 | Sì, l'host non deve essere raggiungibile |
| Più server / load balancer | La challenge deve stare su ogni backend o essere gestita centralmente | Indipendente da dove arriva la richiesta |
| Velocità | Immediata appena il file è raggiungibile | Dipende dall'API DNS e dall'aggiornamento dei server autoritativi |
| Rischio sicurezza | Basso, è coinvolto solo il web server | Una chiave API DNS sul server spesso può modificare tutta la zona |
| Errore tipico | Record AAAA sbagliato, redirect, firewall, CDN davanti | Permessi API mancanti, attesa troppo breve, nameserver non allineati |
Scegli HTTP-01 se …
- il server è pubblico e la porta 80 può restare aperta.
- ti servono certificati per singoli hostname fissi.
- non hai accesso API al DNS o non vuoi distribuire chiavi API sui server.
- il web server o reverse proxy ha già ACME integrato, come Caddy o Traefik.
Scegli DNS-01 se …
- ti serve un certificato wildcard come
*.example.com. - l'host è interno, per esempio un mail server, un'interfaccia di amministrazione o un sistema di laboratorio.
- la porta 80 deve restare chiusa per motivi di sicurezza.
- più server dietro un load balancer usano lo stesso certificato.
Insidie dal lavoro quotidiano
- Let's Encrypt valida HTTP-01 anche via IPv6. Un record AAAA vecchio che punta altrove fa fallire la validazione anche se IPv4 è corretto.
- Un redirect globale da HTTP a HTTPS va bene; un redirect di
/.well-known/verso un altro host o una pagina di login no. - DNS-01: limita i token API alla zona o al record quando possibile, oppure delega
_acme-challengecon un CNAME a una zona di validazione separata. - Dopo il rinnovo ricarica il servizio. Molti certificati scaduti erano in realtà già rinnovati, ma nginx o Postfix servivano ancora quello vecchio.
Domande frequenti
Posso usare insieme HTTP-01 e DNS-01?
Sì, i nomi di una stessa richiesta possono essere validati in modo diverso, e certificati diversi sullo stesso server possono usare challenge diverse. Per la manutenzione però è più chiaro un solo metodo per server.
Perché DNS-01 a volte ci mette tanto?
Il record TXT deve essere visibile su tutti i nameserver autoritativi della zona prima che Let's Encrypt controlli. Molti client aspettano quindi un tempo fisso: se è troppo breve, la validazione fallisce.