Let's Encrypt et zone OVH
Rédigé par Alexandre le 2018-05-09
Quoi de plus contraignant que de mettre à jour tous les trois mois ces certificats ? Bon d'accord, chacun utilise sa petite méthode pour que ce soit simple et automatique, mais c'est pas forcément très propre.
Jusqu'a maintenant, j'utilisais une méthode que je qualifierais de crade. Tous les dimanche à 4h du matin, une tâche s'occupait de stopper le serveur web, générer les certificats, puis redémarrer le serveur web. Bien que ne représentant que peu voire pas du tout d'impact sur le trafic, à chaque exécution de la tâche, le site devenait inaccessible.
Étant un tantinet perfectionniste, je me suis récemment mis en quête d'une solution un peu plus propre. La solution miracle passe par deux scripts de mise à jour des DNS. Comme il est dit dans le titre, mon article traite d'une zone hébergée chez OVH. J'imagine que des scripts équivalents existent pour d'autres registraires.
Pré-requis
Les paquets pré-requis sont les suivants :
certbot
: utilitaire de génération de certificats Let's Encryptca-certificates
: prise en charge du SSL par le systèmeunzip
: permettra d'extraire les scripts pour OVHpython-pip
: pré-requis pour les scripts OVH
Installer les paquets :
apt install certbot ca-certificates unzip python-pip
Certaines librairies python sont nécessaires, les installer :
pip install setuptools && pip install wheel && pip install ovh
Scripts de gestions des DNS
Le manuel de certbot
nous enseigne qu'il est possible d'appeler des scripts avant et après la génération des certificats.
Dans notre cas, les scripts vont permettre de modifier les DNS d'OVH pour nous.
cd /opt
wget https://github.com/antoiner77/letsencrypt.sh-ovh/archive/master.zip
unzip master.zip
cd letsencrypt.sh-ovh-master
rm .gitignore ovh.conf.demo README.md
Générer les clefs d'API
Accéder au site https://api.ovh.com/createToken/, puis :
Account ID or email address
: votre identifiant OVH gérant le DNSPassword
: le mot de passe associéScript name
etScript Description
: certbotValidity
:Unlimited
- Appuyer sept fois sur le bouton
+
GET
: /domainPOST
: /domainPUT
: /domainDELETE
: /domainGET
: /domain/*POST
: /domain/*PUT
: /domain/*DELETE
: /domain/*- Terminer avec
Create keys
Configurer les scripts
Créer et éditer le fichier de configuration :
nano /opt/letsencrypt.sh-ovh-master/ovh.conf
Adapter le fichier avec les valeurs obtenues suite à la génération des clefs d'API :
[default]
; general configuration: default endpoint
endpoint=ovh-eu
[ovh-eu]
; configuration specific to 'ovh-eu' endpoint
application_key=
application_secret=
consumer_key=
Limiter l'accès au répertoire à l'utilisateur courant :
chmod -R 700 /opt/letsencrypt.sh-ovh-master
Générer un certificat
Se placer dans le dossier où se trouvent les scripts :
cd /opt/letsencrypt.sh-ovh-master
Adapter les éléments en gras dans la ligne suivante :
certbot certonly --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --manual --manual-auth-hook ./manual-auth-hook.py --manual-cleanup-hook ./manual-cleanup-hook.py --email adressemail@valide.fr --domains votredomain.fr
Renouvelement automatique
Les certificats Let's Encrypt ont une durée de vie limitée, il convient donc de créer une tâche planifiée pour les renouveler :
crontab -e
Ajouter ce qui suit à la fin du fichier :
0 4 * * 0 cd /opt/letsencrypt.sh-ovh-master && /usr/bin/certbot renew --no-self-upgrade --quiet