Site icon Anthony Jacob

Mise en place de certificat wildcard avec Letsencrypt et OVH

Annonce article blog: mise en place d'un certificat SSL Wildcard avec Let's Encrypt et OVH

Donc, au final, après avoir fait une introduction qui s’est éternisée et est devenue un article à part entière …

Je documente ici comment j’ai mis en place mes certificats wildcard grâce à Letsencrypt et la vérification DNS

Alors comme je l’expliquai en partie dans l’autre article, j’avais déjà mis en place Letsencrypt avec des certificats pour chaque sous-domaine avec l’outil certbot et là je souhaitais mettre en place une vérification DNS pour obtenir un certificat wildcard

Mon domaine étant enregistré chez OVH et utilisant leur DNS, je devais utiliser le plugin officiel  OVH pour l’outil certbot.
Pour la mise en place, je me suis servi principalement de la doc https://certbot-dns-ovh.readthedocs.io/en/stable/

Donc déjà avant toutes actions , un petit backup pour ne rien casser.  Pour moi ça passe par un snapshot de ma VM et un backup du dossier /etc/letsencrypt

tar -cvzf   ~/letsencrypt.tar.gz  /etc/letsencrypt
Disclaimer: sur ma  machine je suis root, c'est mal, je sais!! n'oubliez pas le petit sudo devant  les commandes si nécessaire.

Sur ma distribution Ubuntu 18.04.3 LTS , la version de certbot est un peu en retrait 0.31. à l’heure où j’écris ces lignes.
j’ai donc installé une version plus récente avec le gestionnaire de paquet python (pip) et non celui des repo officiels Ubuntu. Je désinstalle le paquet certbot de ma distrib et purge tous les fichiers.

apt purge certbot

Petite mise à jour de tout le système (attention moi je le fais, car je n’ai pas beaucoup d’enjeux de production, que j’ai fait un snapshot juste avant et que donc je peux vite revenir à un état fonctionnel. Mais il y a un principe qui est vraiment bien à respecter : “If it works, don’t fix it” si ça fonctionne, pas besoin de le réparer (ou de le mettre à jour sans raison dans un environnent de prod))

apt update && apt upgrade 

Ensuite s’il n’est pas déjà installé, installer pip et ses dépendances

apt install python3-pip

Une fois que le gestionnaire de paquet python est installé, on peut donc installer certbot et le plugin OVH

pip install  certbot 
pip install certbot-dns-ovh

Ensuite pour éviter d’avoir qu’un seul et unique fichier de logs immense et  grandissant sans cesse, on définit une stratégie de rotation des logs pour certbot, on créer donc le fichier de config logrotate pour certbot

touch /etc/logrotate.d/certbot

Et on y copie la config suivante

 /var/log/letsencrypt/*.log {
     monthly
     rotate 6
     compress
     delaycompress
     notifempty
     missingok
     create 640 root adm 
} 

Bon maintenant la mise en place du challenge DNS va se passer grosso modo de la même manière que pour les sous-domaines expliqués ici.

Pour vérifier que le domaine nous appartient bien, Letsencrypt va nous demander de placer un enregistrement DNS, si ensuite lorsqu’il vérifie, l’enregistrement est bien là, c’est que le domaine nous appartient bien.

Seuleument, nous n’allons pas placer l’enregistrement à la main, nous allons nous servir de l’api OVH pour que la commande certbot et le plugin le fassent tout seuls comme des grands

Pour ça on se rend sur l’interface OVH pour se créer des accès à l’API https://api.ovh.com/createToken/

l’idée est de donner accès à certbot de manière illimité dans le temps aux méthodes permettant de gérer les enregistrements DNS de tous mes domaines

GET /domain/zone/*
PUT  /domain/zone/* 
POST  /domain/zone/* 
DELETE  /domain/zone/* 

Si tu as besoin de restreindre les droits à certains domaines, tu dois définir les accès aux méthodes domaine par domaine

 GET /domain/zone/
 GET /domain/zone/{zoneName}/status
 GET /domain/zone/{zoneName}/record
 GET /domain/zone/{zoneName}/record/*
 POST /domain/zone/{zoneName}/record
 POST /domain/zone/{zoneName}/refresh
 DELETE /domain/zone/{zoneName}/record/* 

Où {zoneName} est ton nom de domaine

Une fois les informations d’accès à l’api obtenues, il faut créer un fichier qui les contient.

nano /root/.ovhapi

Et met y les informations

dns_ovh_endpoint = ovh-eu
dns_ovh_application_key  = xxx 
dns_ovh_application_secret  = xxx  
dns_ovh_consumer_key  = xxx 

 

Seul le proprio de ce fichier devrait y avoir accès donc n’oublie pas

chmod 600 /root/.ovhapi

Voilà maintenant tout est en place pour que certbot puisse accéder à l’API OVH. La petite commande qui va bien pour obtenir un certificat

certbot certonly --dns-ovh --dns-ovh-credentials ~/.ovhapi -d anthony-jacob.com -d *.anthony-jacob.com --dns-ovh-propagation-seconds 240 --non-interactive --agree-tos

Voilà si tout s’est bien passé, tu as un certificat valide pour les 90 prochains jour. N’oublie pas de mettre ne place un renouvellement automatique et de recharger ton serveur web. De mon côté je tente un renouvellement tous les mois

crontab -e

et ajoutes-y une ligne

0 0 1 * *  certbot renew && service apache2 reload

Si tu l’as suivi et si ça t’a aidé, dis-le-moi dans les commentaires et n’hésite pas aussi à faire un retour s’il y a une correction à apporter

Partagez l'article:
Quitter la version mobile