[certbot][bind] DNS Challenge

L’objetif est de générer automatiquement ses certificats Let’s Encrypt avec Certbot. Le scénario est le suivant :

  1. Certbot initie une demande
  2. Let’s Encrypt initie le Request Challenge
  3. Certbot met à jour Bind afin d’etre pret pour le Request Challenge
  4. Certbot informe à Let’s Encrypt que c’est prêt
  5. Let’s Encrypt verifie l’enregistrement DNS
  6. Let’s Encrypt fourni nos nouveaux certificat

Prerequis:

  • Avoir installé certbot
  • Avoir un serveur bind fonctionnel, le service est exécuté de préférence par un utilisateur spécifique, ex « bind ».

Point d’attention

Tester avec une seule clé nommée « tsig-key ».

Bind

Intégration

Générer les clés et on s’assure que les fichiers sont lisibles par l’utilisateur bind.

tsig-keygen -a hmac-sha512 tsig-key > /etc/bind/tsig.key
tsig-keygen -a hmac-sha512 tsig-key > /etc/bind/rndc.key
chown bind: /etc/bind/tsig.key
chown bind: /etc/bind/rndc.key

Les clés générées sont au format suivant :

key "tsig-key" {
        algorithm hmac-sha512;
        secret "secret==";
};

Partie à ajouter dans named.conf.local :

include "/etc/bind/tsig.key";

zone "jbsky.fr" IN {
        update-policy {
                grant tsig-key name _acme-challenge.www.jbsky.fr. TXT;
                grant tsig-key name _acme-challenge.mail.jbsky.fr. TXT;
        };
        type master;
        file "/etc/bind/db.jbsky.fr";
};

Test

On test la commande suivante en local afin de vérifier si la mise à jour fonctionne.

KEYFILE=/etc/bind/tsig.key
nsupdate -d -k $KEYFILE <<EOT
server ns1.jbsky.fr
zone jbsky.fr.
update add _acme-challenge.mail.jbsky.fr. 10 txt yellow
send
EOT
dig TXT _acme-challenge.mail.jbsky.fr.