Let's Encrypt & API OVH

Let's Encrypt permet déjà depuis déjà plusieurs mois d'obtenir des certificats pour nos sites gratuitement. Dans ce guide nous verrons comment automatiser le processus en utilisant la méthode de vérification DNS-01 avec notre nom de domaine chez ovh.

DNS-01?

Par default, Let's Encrypt utilise http-01 pour vérifier l'appartenance d'un nom de domaine. Dans certains cas cette option n'est pas utilisable et c'est là que dns-01 intervient. Cette technique nous permet de prouver notre légitimité en rajoutant un enregistrement DNS sur notre nom de domaine (TXT avec comme valeur un token donné par Letsencrypt)

Pré-requis

Pour ce guide il vous faut bien sûr un nom de domaine dont les DNS sont hébergés par OVH mais aussi sur votre machine:

  • Python 2 ou 3
  • python-ovh (~> pip install ovh)
  • letsencrypt.sh (disponible ici)
  • Mon hook ovh (disponible ici)

Let's Encrypt go

Dans un premier temps, il va nous falloir enregistrer notre application chez OVH, c'est via celle-ci que nous pourrons ajouter des records DNS. Rendez-vous ici
create_app

OVH nous donne deux éléments importants, notre key et notre secret.
app_token

Renseignez ces deux elements dans le fichier ovh.conf

Nous allons maintenant générer notre token utilisateur pour permettre à l'application d'interagir avec notre compte OVH.

$ ./ovhdns.py --init

Le script nous donne un lien.
En allant sur celui-ci, nous arrivons sur une page nous demandant notre login OVH ainsi qu'une durée d'autorisation. Pour ne pas être embêté l'option "unlimited" est la plus logique. La page nous indique aussi les différentes autorisation que l'application aura sur votre compte, ici /domain/*

$ *ENTER*

Le script nous indique notre token utilisateur, renseignez celui-ci dans le fichier ovh.conf.

La configuration du hook ovh est maintenant terminée, nous pouvons passer au client letsEncrypt.sh.

domains.txt C'est dans ce fichier que nous indiquons nos domaines. Chaque ligne correspond à un certificat, et un certificat peut contenir plusieurs domaine. Par exemple, cette configuration va générer deux certificats avec chacun deux domaines.

example.org www.example.org  
wiki.example.com wiki2.example.com  

config.sh Vous pouvez dans ce fichier définir des variables récurrentes à utiliser comme votre mail etc...

Utilisation du hook

Rien de plus simple maintenant que tout est configuré:

$ ./letsencrypt.sh -c -t dns-01 -k '/path/to/ovhdns.py'

Pensez à ajouter une tâche cron et le tour est joué!


En cas de bug avec ce script, n'hésitez pas à me contacter sur twitter : @antoifon ou via GitHub.
À bientôt !