Générer un certificat Let's Encrypt avec un challenge DNS OVH
Créer un certificat Let's Encrypt avec Certbot et l’API DNS d’OVH.
Prérequis: disposer d’un nom de domaine chez OVH
Configurer et récupérer les éléments de l’API (ovh)
[Lien Api OVH] (https://www.ovh.com/auth/api/createToken)
Sur ce lien: créer l’api si non existante et entrez les routes suivantes (elles correspondent aux actions nécessaires pour Certbot et la validation :
- GET /domain/zone/* : Lecture des zones DNS.
- PUT /domain/zone/* : Modification des enregistrements DNS.
- POST /domain/zone/* : Ajouter des enregistrements DNS.
- DELETE /domain/zone/* : Supprimer des enregistrements DNS.
- POST /domain/zone/*/refresh : Rafraîchir la zone DNS après des modifications.
En retour copier les éléments renvoyés dans un fichier $USER_HOME/ovh.ini
dns_ovh_endpoint = ovh-eu
dns_ovh_application_key = ebf.....f
dns_ovh_application_secret = 448......e
dns_ovh_consumer_key = 5bd.....7
Installer cerbot et ses dépendances
root@cloud:~#python3 -m venv .venv/py3.12-certbot
root@cloud:~#source .venv/py3.12-certbot/bin/activate
(py3.12-certbot) root@cloud:~#pip install pip install --upgrade certbot certbot-dns-ovh
Les secrets de l’api
(py3.12-certbot) root@cloud:~/letsencrypt# ls -alh ./.secrets/
total 12K
drwxr-xr-x 2 root root 4,0K août 5 13:17 .
drwxr-xr-x 6 www-data www-data 4,0K août 5 13:17 ..
-rw------- 1 www-data www-data 229 août 5 13:45 ovh.ini
(py3.12-certbot) root@cloud:~/letsencrypt#
(py3.12-certbot) root@cloud:~/letsencrypt# cat ./.secrets/ovh.ini
Informations pour l’accès à l’API OVH
dns_ovh_endpoint = ovh-eu dns_ovh_application_key = …. dns_ovh_application_secret = … dns_ovh_consumer_key = … (py3.12-certbot) root@cloud:~/letsencrypt#
Fichier de configuration pour certbot
(py3.12-certbot) root@cloud:/letsencrypt#
(py3.12-certbot) root@cloud:/letsencrypt# cd config/
(py3.12-certbot) root@cloud:/letsencrypt/config#
(py3.12-certbot) root@cloud:/letsencrypt/config# cat cli.ini
cli.ini – configuration globale certbot
config-dir = /root/letsencrypt/config work-dir = /root/letsencrypt/work logs-dir = /root/letsencrypt/logs
Adresse e-mail par défaut
email = xxxxx@gmail.com agree-tos = true no-eff-email = true
Générer les certificats
(py3.12-certbot) root@cloud:~# certbot certonly --config /root/letsencrypt/config/cli.ini --dns-ovh --dns-ovh-credentials /root/letsencrypt/.secrets/ovh.ini -d "*.cosmic.ovh" -d "cosmic.ovh" -d "*.grey.cosmic.ovh" -d "*.green.cosmic.ovh"
#Lister les certificats
(py3.12-certbot) root@cloud:~/letsencrypt# certbot certificates --concertbot certificates --config /root/letsencrypt/config/cli.ini --dns-ovh --dns-ovh-credentials /root/letsencrypt/.secrets/ovh.ini
Copie des *pem vers les equipements cibles
(py3.12-certbot) root@cloud:~/letsencrypt/config/live/xxxx.ovh# scp -P 2222 -O ./*pem root@10.0.1.1:/etc/ssl/xxxx.ovh/
Révocation et suppression des certificats
(py3.12-certbot) root@cloud:~#certbot revoke --cert-path /root/letsencrypt/config/live/xxxx.ovh/cert.pem --key-path /root/letsencrypt/config/live/xxxx.ovh/privkey.pem --config /root/letsencrypt/config/cli.ini
Cas d’une instance openwrt : https
root@router:/etc/ssl#chmod 600 /etc/ssl/cosmic.ovh/privkey.pem
root@router:/etc/ssl#chmod 644 /etc/ssl/cosmic.ovh/fullchain.pem
root@router:/etc/ssl#uci set uhttpd.main.cert='/etc/ssl/cosmic.ovh/fullchain.pem' root@router:/etc/ssl#uci set uhttpd.main.key='/etc/ssl/cosmic.ovh/privkey.pem'
root@router:/etc/ssl#uci commit uhttpd
root@router:/etc/ssl#/etc/init.d/uhttpd restart