Problema di certificazione causato da conflitto CNAME e TXT
Categories:
CNAME e TXT con lo stesso prefisso non possono coesistere
Chi ha familiarità con la gestione dei domini sa che i record A e AAAA non possono coesistere con CNAME, ma forse non ha mai incontrato il conflitto tra TXT e CNAME.
In quali casi TXT e CNAME potrebbero usare lo stesso prefisso?
Un esempio è la verifica della proprietà del dominio durante la richiesta di certificati LetsEncrypt tramite la modalità DNS-01.
- Certbot crea un record TXT per
_acme-challenge.example.comusando ackey e acsecret o token - Letsencrypt verifica il record TXT per confermare che il richiedente abbia il controllo del DNS, dimostrando la proprietà del dominio
- Letsencrypt emette il certificato
- Certbot rimuove il record TXT per
_acme-challenge.example.com
Se esiste già un record CNAME per _acme-challenge.example.com quando si tenta di creare il record TXT, la creazione potrebbe fallire, causando il fallimento della verifica della proprietà del dominio.
Perché esiste un record CNAME per _acme-challenge.example.com?
ESA (Edge Security Acceleration) di Alibaba Cloud, simile a Cloudflare, è la versione avanzata del precedente servizio DCDN. Inizialmente non supportava la richiesta automatica di certificati wildcard, quindi utilizzavo script per caricare periodicamente certificati wildcard da me generati, con gestione non ottimale. Successivamente è stato introdotto il DCV托管 che permette la gestione automatica dei certificati wildcard. Seguendo le istruzioni, è possibile gestire autonomamente i certificati wildcard, ma ho scoperto dopo mesi un problema nascosto. Questo record CNAME persistente impedisce la creazione di record TXT con lo stesso prefisso, rendendo impossibile dimostrare la proprietà del dominio altrove.

Soluzioni
Soluzione 1: Non utilizzare il DCV托管
Il DCV托管 richiede di impostare _acme-challenge.example.com con un valore specifico, dichiarando di fatto che il dominio appartiene a terzi e perdendo il controllo autonomo.
Per i certificati wildcard, si può usare uno script che richiama l’API ESA per caricare periodicamente i certificati wildcard generati autonomamente.
Soluzione 2: Non utilizzare la verifica DNS-01
Certbot offre diversi metodi di verifica della proprietà del dominio (challenge). Oltre alla verifica DNS-01, sono disponibili metodi come HTTP-01 e TLS-ALPN-01.
I metodi HTTP-01 e TLS-ALPN-01 richiedono un servizio attivo per verificare la raggiungibilità prima dell’emissione del certificato.
DNS-01 permette di ottenere il certificato prima di configurare il servizio.
Soluzione 3: Superare il muro tra ESA e DNS Resolver
Questi due servizi appartengono entrambi ad Alibaba Cloud ma implementano API DNS separate. Se ESA potesse gestire autonomamente record CNAME o TXT in DNS Resolver e rimuoverli dopo l’ottenimento del certificato, non interferirebbe con l’uso di DNS-01 altrove.
Soluzione 4: Non utilizzare ESA di Alibaba
Cloudflare non presenta questo problema e rilascia certificati liberamente.