Cet article fait suite au précédent article sur la génération de certificat SSL Let’s Encrypt à l’aide de Certbot sous WSL2.
WSL2 – Certbot créer des certificats SSL
Après la publication de cet article, un collègue m’a fait part de la possibilité d’aller un peu plus loin dans l’industrialisation de la création des certificats. C’est ce que nous allons voir dans ce post.
Comme expliqué dans le précédent post (WSL2 – Certbot créer des certificats SSL), l’environnement est sur :
- PKI Let’s Encrypt.
- Certbot.
- OVH pour DNS publique.
- Ubuntu 20.04 hébergé sur WSL2.
L’objectif est cette fois d’utiliser les API OVH afin de créer un enregistrement DNS automatiquement. Cet enregistrement permet d’attester auprès de Let’S Encrypt la légitimité sur le domaine.
Du côté CLI Certbot, nous allons utiliser le plug-in de gestion du DNS OVH “certbot-dns-ovh”. Certbot fournis un plug-in pour la plupart des fournisseurs du marcher. Dans le cas où l’utilisation d’un plug-in n’est pas possible, il est toujours possible d’utiliser les arguments “–manual-auth-hook” et “–manual-cleanup-hook”.
Sommaire
Création de la clef pour l'API OVH
Pour commencer, il est nécessaire d’autoriser Certbot à manipuler le DNS à l’aide des API OVH. Comme expliqué dans le manuel Certbot :
- https://certbot-dns-ovh.readthedocs.io/en/stable/
Il est nécessaire de créer un token avec les accès :
- GET /domain/zone/*
- PUT /domain/zone/*
- POST /domain/zone/*
- DELETE /domain/zone/*
Depuis l’API OVH :
Utiliser l’ID account plutôt que l’adresse email de votre compte OVH.
Si votre compte est protégé par MFA (ci qui est normalement le cas), vous devez saisir le second facteur.
Dès lors que votre authentification est validée, votre nouvelle application est déclarée et prête à être utilisée.
Copier et enregistrer les informations qui vous sont fournies pour l’utilisation de l’API OVH:
- Application Key
- Application Secret
- Consumer Key
Grâce à ce token, nous allons pouvoir accéder et manipuler les enregistrements du DNS hébergé sur OVH depuis une application tierce.
Installation de Certbot
Nous allons installer Certbot sur notre distribution Ubuntu WSL.
Cette fois-ci, plutôt que d’utiliser “apt” pour réaliser l’installation des packages, nous allons utiliser “snap” en suivant le processus d’installation documenté sur le site de Certbot.
Pour commencer, mettre à jour la distribution :
sudo apt update
sudo apt upgrade
Puis lancer l’installation de Certbot à l’aide de snap.
Le processus est documenté dans la doc :
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Si comme moi, vous obtenez l’erreur :
“error: cannot communicate with server: Post http://localhost/v2/snaps/certbot: dial unix /run/snapd.socket: connect: no such file or directory”
lors de l’utilisation de snap, vous pouvez réparer l’installation du demon à l’aide des commades suivantes :
sudo apt-get update && sudo apt-get install -yqq daemonize dbus-user-session fontconfig
sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME
Cette solution provient de “sunliusi” sur le Github suivant :
Certbot est installé.
Installation du Plugin DNS OVH pour Certbot
Certbot possède de nombreux plug-ins permettant la manipulation du DNS chez la majorité des hébergeurs publics.
A savoir :
La liste est disponible dans la documentation :
Nous allons installer le plugin OVH.
sudo snap set certbot trust-plugin-with-root=ok
sudo snap install certbot-dns-ovh
Création du fichier d'authentification Certbot à OVH
Comme expliqué dans la documentation Certbot :
nous allons créer un fichier contenant les informations d’authentification à l’API OVH en se basant sur la clef que nous avons généré dans la première partie de ce post.
Sur la machine WSL, créer un fichier, pour ma part, j’ai nommé ce fichier :
- ovhcertbot.ini
Ce fichier doit contenir les information d’authentification à l’API OVH au format :
# OVH API credentials used by Certbot
dns_ovh_endpoint = ovh-eu
dns_ovh_application_key = MDAwMDAwMDAwMDAw
dns_ovh_application_secret = MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
dns_ovh_consumer_key = MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
- dns_ovh_endpoint = ovh-eu –> région de mon tenant OVH.
- dns_ovh_application_key = XXXXX –> Application Key
- dns_ovh_application_secret = XXXXX –> Application Secret
- dns_ovh_consumer_key = XXXXX –> Consumer Key
Création du certificat
Il est désormais possible de générer le certificat SSL à l’aide de Certbot sans manipulation préalable des enregistrements DNS du domaine.
Le plug-in va se charger de la création et la suppression de l’enregistrement DNS.
La création du certificat est réalisée avec le CLI :
sudo certbot certonly --dns-ovh --dns-ovh-credentials /mnt/c/temp/cert/ovhcertbot.ini --dns-ovh-propagation-seconds 60 -d fs.teddycorp.fr --email cert@teddycorp.net --agree-tos --no-eff-email
Où :
- ” –dns-ovh” : stipule l’utilisation d’un DNS OVH (plug-in OVH).
- “–dns-ovh-credentials” : L’emplacement du fichier contenant les informations d’authentification à l’API OVH.
- “–dns-ovh-propagation-seconds” : temporise le temps de propagation lors de la création de l’enregistrement DNS.
- “–email” : adresse email de notification.
- “–agree-tos” : Accept la licence.
- “–no-eff-email” : ne pas partager mon adresse email avec EFF.
L’ensemble des arguments pour Certbot sont disponibles :
Le certificat est disponible dans le répertoire “/etc/letsencrypt/live/%domaine%/”.
Vous trouverez les informations concernant la manipulation des certificat dans le post :
Notes
- l’utilitaire “snap” peut-être quelque peu capricieux. Il peut-être judicieux d’utiliser une machine Ubuntu pour un environnement de production industrialisée.
- Bon nombre de paramètres peuvent être configurés à l’aide du fichier “”, ce qui a pour but d’alléger les CLI et d’éviter les erreurs.
- Le renouvellement d’un certificat nécessite des arguments supplémentaires.