Letsencrypt - Tout fonctionne sauf le renouvellement automatique

Voici du feedback et du fixing qui peuvent aider ceux qui constatent que le renouvellement automatique du certificat ne se fait pas.

La méthode de certificat que j’ai déployée pour la seconde création de certificat il y a plus de 2 mois a installé certbot-auto dans /opt/letsencrypt :
https://domohab.be/index.php/2019/02/08 … -internet/

C’est un autre endroit que le premier certificat que j’avais installé par une autre méthode : /etc.

D’autres tutos donnent encore d’autres chemins d’exécution : /usr/local/sbin.

Je me rend compte que mes fichiers crontab et certbot-auto étaint multiples et aux contenus variables avec tantôt un chemin et tantôt l’autre !

Mon certificat ne s’est pas mis à jour après plus de 2 mois sans que je puisse dire si c’est par mauvaise écriture du crontab ou mauvais fichiers.

Voici quels tests pour discerner les choses !

  • La commande préconisée dans le crontab ne marche pas quelque soit le chemin de commande retenu.

  • Le certbot-auto de /opt/letsencrypt correspondant au certificat actuel renouvèle manuellement avec succès mon certificat depuis ce répertoire et seulement celui-ci.

  • Il y a un autre certbot-auto et un autre crontab (dans /etc) vers lesquels malheureusement la commande « whereis » pointe sans que je sache pointer whereis sur ceux de /opt/letsencrypt.

Bref… je ne comprends pas tout… mais en exécutant manuellement la commande suivante (en sudo), qui ajoute de se déplacer dans le bon répertoire, le renouvèlement de certificat fonctionne depuis n’importe quel répertoire !

Code : Tout sélectionner

sudo -i
cd /opt/letsencrypt && /opt/letsencrypt/certbot-auto renew --no-self-upgrade --post-hook "systemctl restart apache2"

Par déduction, je parie que le bon crontab sera :

Code : Tout sélectionner

42 6 * * * cd /opt/letsencrypt && /opt/letsencrypt/certbot-auto renew --no-self-upgrade --post-hook "systemctl restart apache2"

Ne sachant pas quel crontab se lance, j’ai mis la ligne à la fois dans le crontab du répertoire /etc et dans celui du répertoire /opt/letsencrypt.

Enfin, pour blinder la chose, j’ai trouvé le moyen d’ajouter le chemin /opt/letsencrypt dans $PATH en remplaçant la ligne :

Code : Tout sélectionner

echo PATH

par :

Code : Tout sélectionner

echo PATH=/opt/letsencrypt:$PATH

Et ainsi on obtient :

Code : Tout sélectionner

jeedom@Jeedom:~$ echo $PATH
/opt/letsencrypt:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
jeedom@Jeedom:~$ whereis crontab
crontab: /usr/bin/crontab /etc/crontab /opt/letsencrypt/crontab /usr/share/man/man1/crontab.1.gz /usr/share/man/man5/crontab.5.gz
jeedom@Jeedom:~$ whereis certbot-auto
certbot-auto: /etc/certbot-auto /opt/letsencrypt/certbot-auto

Malgré tout j’ai encore un fonctionnement imparfait donc ma configuration a priori fonctionnelle n’est pas très propre :

Code : Tout sélectionner

jeedom@Jeedom:/$ sudo /opt/letsencrypt/certbot-auto renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/XXX.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Attempting to renew cert (XXX) from /etc/letsencrypt/renewal/XXX.conf produced an unexpected error: [b]Unable to find manual-auth-hook command ./manual-auth-hook.py in the PATH.
(PATH is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)[/b]. Skipping.
[b]All renewal attempts failed.[/b] The following certs could not be renewed:
  /etc/letsencrypt/live/XXX/fullchain.pem (failure)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/XXX/fullchain.pem (failure)
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates above have not been saved.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 renew failure(s), 0 parse failure(s)

Après plusieurs mois de tests, le renouvellement automatique ne marche pas mais la commande recopiée en manuel oui.

Si quelqu’un comprend mieux et peut nettoyer ma configuration, je l’en remercie.

Si cette solution a fonctionné pour vous, merci de le signaler en retour SVP.

Bonjour

je suis dans la même configuration de toi
je n’ai jamais réussi a faire marcher le renouvellement automatique du certificat, mais en le lancant manuellement ca marche .

Le soucis vient du script le-renew, du coup j’ai tout modifier

alors dans le fichier certletsencryptrenew.sh il faut modifier la première ligne

nano /bin/certletsencryptrenew.sh

et la première ligne est a changer par
curl -L -o /usr/local/sbin/le-renew https://raw.githubusercontent.com/frixo3190/le-renew/main/le-renew

et tu auras ma version modifier du script qui marche !

cdt

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.