Let's Encrypt et zone OVH

Rédigé par Alexandre le 2018-05-09

#web #auto-hébergement

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 Encrypt
  • ca-certificates : prise en charge du SSL par le système
  • unzip : permettra d'extraire les scripts pour OVH
  • python-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 :

  1. Account ID or email address : votre identifiant OVH gérant le DNS
  2. Password : le mot de passe associé
  3. Script name et Script Description : certbot
  4. Validity : Unlimited
  5. Appuyer sept fois sur le bouton +
  6. GET : /domain
  7. POST : /domain
  8. PUT : /domain
  9. DELETE : /domain
  10. GET : /domain/*
  11. POST : /domain/*
  12. PUT : /domain/*
  13. DELETE : /domain/*
  14. 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

Source