Magazine Focus Emploi

Mise à jour : Création de certificats SSL gratuits avec Let’s Encrypt pour des domaines chez OVH

Publié le 30 octobre 2023 par Abouchard

Il y a quelques années, j’ai écrit l’article Création de certificats SSL gratuits avec Let’s Encrypt pour des domaines chez OVH. Son contenu est toujours d’actualité… à un détail près.

Ces derniers jours, j’ai pu voir que mes certificats SSL n’étaient plus mis à jour. Un problème empêchait Let’s Encrypt de les générer, alors j’ai regardé de plus près.
Je suis tombé sur ce bug ouvert sur le GitHub de Certbot. Il semblerait que depuis 3 semaines, l’API d’OVH a été modifiée sans prévenir. Une requête qui retournait auparavant un code 200 (sans corps de réponse) retourne désormais un code 204 (avec un corps de réponse vide). La différence est subtile, mais suffisante pour faire planter une brique qui s’attend dorénavant à recevoir un flux JSON.

Bon, vous savez ce que je pense d’OVH (du bien autant que du mal, en essayant d’être lucide), mais là ce n’est vraiment pas une bonne idée de casser quelque chose d’aussi essentiel aujourd’hui que Let’s Encrypt. Bref.

J’ai trouvé deux solutions pour contourner le problème. La première est un hack rapide, la seconde est une réinstallation un peu particulière.

Le hack rapide

Cette solution s’inspire d’un commit sur la bibliothèque Lexicon, censé corriger le problème. Il a toutefois fallu une petite modification sous Ubuntu 22.04 (sûrement parce que ce n’est pas la dernière version de la bibliothèque qui est fournie par le système).

Ouvrez le fichier /usr/lib/python3/dist-packages/lexicon/providers/ovh.py
À la fin du fichier, remplacez la ligne suivante :

return result.json()

Par ces lignes :

try:
    return result.json()
except Exception:
    return None

(pensez à indenter le code correctement sinon ça ne fonctionnera pas, c’est du Python)

Une fois la modification effectuée, une simple commande letsencrypt renew a suffi pour renouveler les certificats correctement.

La réinstallation

L’autre solution est de réinstaller complètement Certbot (le logiciel client Let’s Encrypt), comme l’explique la documentation de l’Electronic Frontier Foundation. Pour cela, il ne faut pas utiliser les packages mis à disposition par le système, ils ne sont pas à jour. Il faut utiliser les packages snap.

Il faut commencer par effacer les packages préalablement installés :

$ sudo apt remove certbot python3-certbot python3-certbot-dns-ovh

Puis installer le snap Certbot :

$ sudo snap install --classic certbot

Puis créer un lien symbolique pour faciliter l’accès au programme :

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Puis exécuter la commande suivante :

$ sudo snap set certbot trust-plugin-with-root=ok

Puis installer le plugin DNS :

$ sudo snap install certbot-dns-ovh

Une fois que tout cela est fait, la commande certbot renew devrait fonctionner. Sur un vieux serveur, j’avais plusieurs installations de Let’s Encrypt qui traînaient (packages système, pip…), et j’ai dû utiliser le chemin complet vers le programme : /snap/bin/certbot renew


Retour à La Une de Logo Paperblog

A propos de l’auteur


Abouchard 392 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte