Letsencrypt: certbot & dns ovh
Procédure de création/mise à jour des certificats letsencrypt avec certbot et certbot-dns-ovh
Toutes les infos ont été trouvées sur ce site: https://buzut.net/certbot-challenge-dns-ovh-wildcard/
Installations des outils
# apt-get install python3-pip
# python3 -m pip install --upgrade certbot certbot-dns-ovh
Configuration des journaux
Création du fichier "/etc/logrotate.d/certbot" avec le contenu suivant
/var/log/letsencrypt/*.log {
monthly
rotate 6
compress
delaycompress
notifempty
missingok
create 640 root adm
}
Création des clés API OVH
Pour que le script puisse vérifier que le domaine vous appartient, il doit avoir l'autorisation de modifier des enregistrements TXT dans les DNS.
Il faut donc créer les clés API avec une date de validité illimitée et pour plus de sécurité, avec une restriction au niveau de l'adresse IP du serveur où sera exécuté le script.
Les droits doivent être renseignés de cette manière:
GET /domain/zone/*
PUT /domain/zone/*
POST /domain/zone/*
DELETE /domain/zone/*
Une fois les clés créées, il est nécessaire de créer un fichier INI pour y stocker les différentes clés générées.
Créer le fichier ~/.secrets/certbot/ovh.ini avec le contenu suivant:
dns_ovh_endpoint = ovh-eu
dns_ovh_application_key = xxx
dns_ovh_application_secret = xxx
dns_ovh_consumer_key = xxx
Ne pas oublier de fixer les droits sur le fichier :
# chmod 600 ~/.secrets/certbot/ovh.ini
Génération des certificats
Par exemple, pour mon domaine
# certbot certonly --dns-ovh --dns-ovh-credentials ~/.secrets/certbot/ovh.ini -d quennec.fr -d *.quennec.fr
Automatiser le renouvellement
A renseigner dans crontab pour un contrôle tous les lundi à 9:00 et une mise à jour si nécessaire.
00 9 * * 1 /usr/local/bin/certbot certonly --dns-ovh --dns-ovh-credentials /root/.secrets/certbot/ovh.ini --non-interactive --agree-tos --email mon@email.fr -d quennec.fr -d *.quennec.fr && systemctl reload nginx
Configuration vhost nginx
Modifier le fichier vhost correspondant au domaine pour y intégrer les directives liées au certificat letsencrypt.
server {
listen 443 ssl;
server_name quennec.fr www.quennec.fr;
...
ssl_certificate /etc/letsencrypt/live/quennec.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/quennec.fr/privkey.pem;
...
}
Ajouter un commentaire