Certbot dns plugin rfc2136

Condividi:

Nell articolo “Certificati https gratuiti con Let’s Encrypt” è stato mostrato come generare certificati https per i propri domini web utilizzando certbot e la CA di Let’s encrypt.

Il core di certbot permette di generare certificati per i domini serviti dal server in cui viene eseguito, ma con alcuni plugin è possibile generare certificati per ogni dominio di cui si amministra il dns, il certificato però dovrà poi essere istallato manualmente.

Ci sono vari plugin da utilizzare, a seconda del proprio provider dns, in questo articolo ci interfacciamo con il nostro server bind tramite certbot-dns-rfc2136

Per verificare l’identità di chi gestisce il dominio, il plugin cerca il record TXT nella zona dns con chiave _acme-challenge ed un certo valore fornito dal bot in fase di generazione. Questo record può essere inserito manualmente al momento della richiesta, ma quello che viene mostrato in questo articolo è la modalità di automatizzazione di questo processo.

Genereremo una chiave TSIG che installeremo in BIND e forniremo al plugin di certbot l’autorizzazione di inserire record nella zona dns del nostro dominio

Installiamo il plugin

Chiave TSIG

Per prima cosa dobbiamo creare una chiave TSIG con cui autorizzare l’inserimento di record in bind

Vengono generati due file, che contengono la chiave pubblica e la chiave privata

I permessi di questi file non sono messi a caso. Una volta installata la chiave in bind, chiunque disponga di questi file può inserire nel nostro dns quello che vuole. Vanno pertanto tenuti al sicuro e con i permessi corretti

Configurazione di BIND

Leggiamo il contenuto del file Kmiodominio_key.+165+53517.key

Questa stringa ci serve per determinare i due valori di cui abbiamo bisogno. Il primo campo “miodominio_key.” sarà il nome della nostra chiave, mentre le due ultime stringhe alfanumeriche rappresentano il secret

Definiamo quindi nel config file di bind la chiave di accesso, inserendo name e secret come mostrato di seguito. Se anche solo uno dei due valori non corrisponde a quelli contenuti nel file generato con dnssec-keygen, nsupdate non riuscirà ad autenticarsi e quando invieremo il comando send ci restituirà l’errore “update failed: NOTAUTH(BADKEY)”

Nella definizione della zona del dominio inseriamo le direttive di accesso

Testiamo eventuali errori di sintassi

E ricarichiamo il servizio bind

Testiamo la chiave

Per sicurezza, facciamo una copia di backup del nostro file di zona che si trova in /var/cache/bind, non si sa mai

Se non abbiamo nsupdate, dobbiamo installare dnsutils

Inseriamo nella nostra zona un record TXT “foo” contenente il valore “bar”

Interroghiamo il name server

Creiamo il file ini per certbot

Creiamo il file di autenticazione per il plungin di certbot ed impostiamo i diritti di accesso. Solo root deve avere accesso a questo file, in caso contrario certbot mostrerà un messaggio di errore

In questo file dobbiamo inserire l’indirizzo ip del server dns, il nome della chiave e la stringa della chiave pubblica che abbiamo inserito in /etc/bind/named/named.conf.local

Generazione dei certificati

Certificato per miodominio.me

Certificato per miodominio.me e www.miodominio.me

Certificato per miodominio.me con attesa di 30 secondi per la propagazione dns