pfSense : Mise a jour des certificats TLS

par

dans

Cet article fait suite à le défi DNS avec certbot et BIND. A la base, j’utilisais le plugin acme de Pfsense pour générer les certificats et HA proxy en tant que reverse proxy. Comme les certificats dans mon cas sont issus du DNS challenge, tous les 3 mois, il fallait refaire la manipulation.

Pour rappel, le principe est suite à la génération de nouveaux certificats avec certbot, flèches 1 à 6, les certificats sont mis à jour dans Pfsense et on relance HA proxy, flèche 7.

Ici, j’expose la manière de mettre à jour les certificats dans Pfsense de manière automatique.

Mettre à jour les certificats sans intervention

Les certificats doivent déjà être générés

Par rapport à la première étape, qui est de générer les certificats automatiquement avec le DNS challenge (cette partie doit être fonctionnelle), nous disposons des certificats dans un répertoire selon la structure de fichier suivante :

ls /etc/letsencrypt/live/jbsky.fr/
cert.pem
chain.pem
fullchain.pem
privkey.pem

Le nom du certificat doit correspondre au domaine

Côté Pfsense, il faut que le nom du certificat corresponde au FQDN du site, exemple, jbsky.fr

Le script de mise à jour

Télécharger le script suivant. Il reprend le principe de scripts existants, que je trouvais peu lisibles : Python traite la partie XML de la configuration, le shell fait le reste.

curl https://raw.githubusercontent.com/jbsky/jbsky.fr/main/pfsense/update-pfsense -o /usr/local/sbin/update-pfsense
chmod +x /usr/local/sbin/update-pfsense

Seul le bloc suivant est à renseigner. La liste reprend les noms des répertoires présents sous /etc/letsencrypt/live/ :

##################### Partie à configurer #####################
sshpass='root@192.168.0.254'
list="exemple.org another.exemple.org"
dir="/etc/letsencrypt/live"
############################# Fin #############################

Installer la bibliothèque lxml.

pip3 install lxml

Il ne reste qu’à tester, puis à planifier l’exécution.

Planifier l’exécution après le renouvellement

Si la tâche de renouvellement ressemble à ceci :

47 6 * * * root /usr/bin/certbot renew --quiet

on ajoute la ligne suivante, soit une exécution trois minutes après le renouvellement des certificats.

50 6 * * * root /usr/local/sbin/pfsense-update

Liens

Articles connexes