C’est comme une ritournelle tous les 3 mois, je reçois le message de demande de renouvellement de certificat Let’s Encrypt.Je m’étais promis d’automatiser la chose au plus vite mais j’avoue qu’il fallait que je réfléchisse à la manière la plus efficace de le faire. Une idée en chassant une autre j’étais déjà passé à d’autres problématiques inhérentes à la vie d’un hominidus geekus.
(Si jamais vous n’avez toujours pas passé votre site internet en Https , voici un tuto simplissime que je vous en courage à suivre.)
Donc pour revenir à nos moutons , »renouveler automatiquement son certificat Let’s encrypt » est devenue une nécessité pour qui voudrait dégager du temps pour des tâches un peu plus intéressantes . Voici donc comment s’y prendre:
Quand expire mon certificat SSL ?
Lister ses certificats et obtenir leurs dates d’expirations:
certbot-auto certificates
ce qui donne:
Found the following certs:
Certificate Name: monServeur.fr
Domains: monDomaine.fr
Expiry Date: 2017-12-28 16:20:59+00:00 (VALID: 6 days)
Certificate Path: /etc/letsencrypt/live/monServeur.fr/fullchain.pem
Private Key Path: /etc/letsencrypt/live/monServeur.fr/privkey.pem
C’est surtout la date d’expiration qui nous intéresse , ici encore 6 jours de validité. Il est donc grand temps de renouveler le certificat SSL de notre site web auprès de Let’s Encrypt (LE)
En mode manuel
Mon serveur web étant sous nginx je précise que le principe est le même pour apache.
-On arrête le service web:
service nginx stop
-On demande le renouvellement du certificat à l’agent « certbot »
certbot-auto renew
Si tout se passe bien vous aurez un message du type:
« Congratulations, all renewals succedeed »
-On redémarre le service nginx
service nginx start
-On vérifie la nouvelle date d’expiration qui devrait désormais être dans 90 jours.
certbot-auto certificates
Du coup ça serait pas mal d’automatiser tout ça 🙂
En mode automatique
-On récupère le chemin absolu pour l’agent certbot afin de le coller dans la crontab.
whereis certbot-auto
Chez moi la commande me renvoie comme chemin:
/usr/local/sbin/certbot-auto
Editer la crontab en copiant et aménageant à votre sauce cette ligne:
0 2 30 * * /usr/local/sbin/certbot-auto renew –pre-hook « service nginx stop » –post-hook « service nginx start » >> /var/log/certbot-renew.log | mail -s « CERTBOT Renouvellement » admin@monMail.com < /var/log/certbot-renew.log
Ici le renouvellement de certificat est invoqué tous les 30 jours à 02h00 du matin , envoi un mail avec le log si tout s’est bien déroulé.
Si jamais vous ne passez pas par l’outil « certbot » la ligne ci-dessous beaucoup plus simple devrait le faire:
30 3 * * 0 /opt/letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt/renewal.log
Problème
invalid PID number "" in "/run/nginx.pid"
pkill nginx
cd /etc/letsencrypt/renewal
- Éditer le fichier avec son nom de domaine
- Commenter la ligne comme ceci :
#pre_hook = service nginx stop
- Trouver la ligne suivante
post_hook = service nginx start
- La remplacer par:
post_hook = service nginx restart
Merci pour ce tuto, en effet, moi j’utilise plutôt:
/opt/letsencrypt/letsencrypt-auto renew
hello 🙂
super, merci, c’est exactement ce que je cherchais 😀
par contre il n’y a pas une astuce pour éviter de devoir renouveller les cert tous les 3 mois ? genre un script shell ou qlq chose ?
merci d’avance !
salut, oui cest à la fin du billet , la ligne à rajouter dans la crontab
Bonjour
Comment renouveler mon certificat SSL Let’s Encrypt en ssh avec Putty ? Merci
c’est exactement la même procédure avec Putty ^^
Merci pour ce tuto ! Plus besoin de renouveler mes certifs à la main tous les trois mois maintenant!