Che cos’è DNS CAA e come convalidare e implementare?

Sfrutta il record DNS CAA per autorizzare la CA a emettere i certificati TLS.

Cos’è il DNS CAA?

CAA è uno dei tipi di record DNS che indica alla CA se deve emettere un certificato o meno. In altre parole, stai facendo sapere al mondo chi dovrebbe emettere il tuo dominio Certificato SSL/TLS. L’implementazione della CAA è stata resa obbligatoria alla fine del 2017, quindi è relativamente nuova e meno del 5% dei siti popolari l’ha implementata.

Facciamo un esempio: winadmin.it possiede un sito chiamato “gf.dev”, che ha il seguente record CAA.

gf.dev.			3586	IN	CAA	0 issue "digicert.com; cansignhttpexchanges=yes"
gf.dev.			3586	IN	CAA	0 issuewild "comodoca.com"
gf.dev.			3586	IN	CAA	0 issue "comodoca.com"
gf.dev.			3586	IN	CAA	0 issuewild "digicert.com; cansignhttpexchanges=yes"
gf.dev.			3586	IN	CAA	0 issuewild "letsencrypt.org"
gf.dev.			3586	IN	CAA	0 issue "letsencrypt.org"

Guardando i risultati di cui sopra, posso ottenere il certificato emesso solo da DigiCert, Comodo e Let’s encrypt. Se chiedo a Thawte o ad un’altra CA di emettere un certificato per gf.dev, non saranno in grado di farlo. Inoltre, se presti attenzione, noterai che alcune voci hanno problemi e alcuni problemi sono selvaggi. Scopriamo cosa sono.

  • issue – indica alla CA di emettere il certificato solo per quel dominio.
  • issuewild: la CA può emettere il certificato con caratteri jolly in modo che possa essere utilizzato in un dominio o sottodominio.

Il record CAA supporta anche iodef (formato di scambio della descrizione dell’oggetto incidente) che consente a CA di inviare un rapporto di violazione all’e-mail o ai dettagli di contatto specificati.

Cosa succede quando non viene trovato alcun record CAA?

Se un dominio non ha un record CAA, chiunque può generare un CSR per quel dominio e ottenere il certificato firmato da qualsiasi CA. Questo è un rischio per la sicurezza.

È chiaro adesso?

Ci sono alcune abbreviazioni che ho usato sopra. Diamo un’occhiata a cosa sono.

  • DNS: sistema dei nomi di dominio
  • CA – Autorità di certificazione
  • CAA – Autorizzazione dell’autorità di certificazione
  • TLS: sicurezza del livello di trasporto
  • SSL: livello socket sicuro

Come controllare il record CAA DNS?

Esistono diversi modi per convalidare il record CAA. Se non vuoi lasciare il tuo terminale, puoi controllare usando il comando dig.

dig caa $YOURWEBSITE.COM

Esempio di winadmin.it.com

[email protected]:~# dig caa winadmin.it.com

; <<>> DiG 9.11.3-1ubuntu1.8-Ubuntu <<>> caa winadmin.it.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54430
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;winadmin.it.com.			IN	CAA

;; ANSWER SECTION:
winadmin.it.com.		3600	IN	CAA	0 issuewild "comodoca.com"
winadmin.it.com.		3600	IN	CAA	0 issuewild "letsencrypt.org"
winadmin.it.com.		3600	IN	CAA	0 issue "comodoca.com"
winadmin.it.com.		3600	IN	CAA	0 issue "digicert.com; cansignhttpexchanges=yes"
winadmin.it.com.		3600	IN	CAA	0 issue "letsencrypt.org"
winadmin.it.com.		3600	IN	CAA	0 issuewild "digicert.com; cansignhttpexchanges=yes"

;; Query time: 7 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Tue Oct 08 07:12:21 UTC 2019
;; MSG SIZE  rcvd: 298

[email protected]:~#

Se ti piace testarlo da remoto, puoi usare Tester CAA DNS strumento in linea.

Come aggiungere un record CAA?

Tecnicamente, questo è lo stesso modo in cui aggiungi altri record DNS come A, NS, CNAME, ecc.

Se stai utilizzando Cloudflare, vai alla scheda DNS >> aggiungi un record e seleziona CAA come tipo.

Per GoDaddy, vai a Gestione DNS e aggiungi un record

Se non sei sicuro di come aggiungere, puoi contattare il tuo fornitore di DNS/hosting per assistenza.

Conclusione

Se non lo è già, dovresti sfruttare il record CAA per aggiungere un livello di sicurezza del dominio. L’aggiunta di un record CAA non ti costa.

Ti è piaciuto leggere l’articolo? Che ne dici di condividere con il mondo?