Add new comment

Nginx : prolonger automatiquement la durée des certificats Let’s Encrypt

Vous 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 smiley.

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

 

Tags: 
You must have Javascript enabled to use this form.