Nginx : prolonger automatiquement la durée des certificats Let’s Encrypt
Sun, 02/28/2016 - 17:00 — geek17Vous avez suivi l'article Nginx : passer votre site en HTTPS gratuitement avec Let’s Encrypt et vous avez maintenant un site sécurisé.
Oui mais voilà, les certificats Let’s Encrypt ne sont valides que 90 jours.
A moins que vous vouliez manuellement re-générer un certificat tous les 89 jours, je vous propose avec cet article de programmer une tache qui le fera automatiquement pour vous .
Ce tutoriel est obsolète, mais une version actualisée est dispo ici https://www.geek17.com/fr/content/nginx-passer-votre-site-en-https-gratuitement-avec-let-s-encrypt-67
La commande manuelle
Avant d'automatiser cette tâche, on commence par exécuter la commande manuellement pour vérifier qu'elle fonctionne bien.
Direction le dossier /etc
cd /etc
Puis, il faudra lancer une commande similaire à celle ci-dessous
./letsencrypt-auto certonly -a webroot --email xxxx@geek17.com -d www.geek17.com -d geek17.com --rsa-key-size 4096 --webroot-path /var/www/www.geek17.com/ --renew-by-default --agree-tos
Quelques explications pour que vous puissiez l'adapter à votre cas :
L'option -d me permet de spécifier mes 2 sous domaines : www.geek17.com et geek17.com
L'option --webroot-path indique l'emplacement de la racine de votre site web.
A cet emplacement, le client Let’s Encrypt va créer un fichier (dans /.well-known/acme-challenge) lui permettant de vérifier que vous êtes bien le propriétaire du domaine sur lequel le certificat sera créé.
cf. l'article Nginx : passer votre site en HTTPS gratuitement avec Let’s Encrypt pour plus d'info sur cette partie.
Création du script et de la tâche Cron
On commence par créer un fichier qui contiendra les commandes à exécuter pour renouveler le ou les certificats
nano /home/dev/renewLetsEncrypt.sh
Dans ce fichier, on ajoute les commandes suivantes (à adapter pour votre cas en reprenant la commande que vous avez créées au chapitre précédent)
#!/bin/sh
cd /etc/letsencrypt/
./letsencrypt-auto certonly -a webroot --email xxxx@geek17.com -d www.geek17.com -d geek17.com --rsa-key-size 4096 --webroot-path /home/dev/www/www.geek17.com/ --renew-by-default --agree-tos
service nginx reload
Puis on rend ce script exécutable
chmod +x /home/dev/renewLetsEncrypt.sh
Nous allons maintenant créer une tache cron pour l'exécuter tous les mois.
Attention, pensez bien à l'instruction sudo devant crontab pour que la tache soit exécutée en tant que root.
sudo crontab -e
Puis tapez l'instruction suivante, qui demande de lancer notre script /home/dev/renewLetsEncrypt.sh, le 1ère de chaque mois à 2h du matin.
Le fichier de log /tmp/renewLetsEncrypt.log, contiendra le résultat de l'exécution,
0 2 1 * * /home/dev/renewLetsEncrypt.sh >> /tmp/renewLetsEncrypt.log