Echec de la mise à jour automatique du certificat avec webroot

Bonjour,

Il y a quelques mois de cela, j’ai installé peertube (a priori la v3.2.1) sur un serveur Debian 10 dédié. J’ai suivi à la lettre le tutoriel d’installation, en particulier la partie dédiée au serveur web (celle-là: PeerTube documentation) et tout a bien fonctionné sur le coup (au passage, merci pour la doc vraiment accessible) .

Cependant, je me suis rendu compte il y a quelque temps que le renouvellement automatique du certificat Lets Encrypt n’a pas fonctionné. J’ai essayé de faire un renouvellement manuel, et je pense avoir identifié le problème, grâce au message ci-dessous:

Attempting to renew cert (<my_domain.whatever>) from /etc/letsencrypt/renewal/<my_domain.whatever>.conf produced an unexpected error: [Errno 2] No such file or directory: '/var/www/certbot'. Skipping.

La raison pour laquelle ce path est demandé est que j’ai suivi les instructions pour que le renouvellement utilise l’autentification « webroot », à savoir:

$ # Replace authenticator = standalone by authenticator = webroot
$ # Add webroot_path = /var/www/certbot
$ sudo vim /etc/letsencrypt/renewal/your-domain.com.conf

Donc, que faut-il faire exactement pour réparer tout ça?

Si je créé un dossier /var/www/certbot vide, j’ai un autre message d’erreur qui se termine par:

If you're using the webroot plugin, you should also verify that you are serving files from the webroot path you provided.

Je ne sais pas encore ce que « serving files » signifie, mais ça semble une bonne piste.

J’ai remplacé /var/www/certbot par /var/www/peertube et j’ai un autre message d’erreur qui ne parle plus de webroot. Au lieu de ça, ça fini par:

To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.

Bonjour,

Ça correspond à https://github.com/Chocobozzz/PeerTube/blob/develop/support/nginx/peertube#L11 et https://github.com/Chocobozzz/PeerTube/blob/develop/support/nginx/peertube#L37

Peut-être qu’un mkdir /var/www/cerbot résoudrait l’erreur initiale.

Bonsoir, moi je dirais que man certbot peut donner un coup de main, il me semble qu’il y a une option pour donner le chemin. Ensuite est-ce que vous avez laissé le port 80 ouvert aussi est une piste si vous vous souvenez pas vôtre choix initial.

Vous pouvez regarder aussi ici : /etc/letsencrypt/renewal/

Lorsqu’un certificat est délivré, par défaut Certbot crée un fichier de configuration de renouvellement que les pistes les options qui ont été sélectionnés lors de Certbot a été exécuté . Cela permet à Certbot d’utiliser à nouveau ces mêmes options au moment du renouvellement. Ces fichiers de configuration de renouvellement se trouvent à l’adresse /etc/letsencrypt/renewal/CERTNAME .

Un peu de doc : User Guide — Certbot 1.21.0.dev0 documentation

J’espère que cela aidera.

1 Like

Merci pour vos réponses.

Mon certificat était de toute façon périmé. Je l’ai supprimé et ai recommencé la procédure d’installation, après avoir créé un dossier var/www/certbot. J’ai testé le renouvellement avec un sudo certbot renew --dry-run. Tout semble fonctionner.

Par contre, contrairement à ce qui est indiqué dans la doc (à savoir « Certbot should have installed a cron to automatically renew your certificate. »), certbot ne semble pas avoir installé de cron pour le renouvellement automatique du certificat, en tout cas, je n’en vois pas dans la liste obtenue avec crontab.

Il est aussi possible que ça soit une unité timer systemd.

systemctl status certbot.timer
2 Likes

L’option dry-run ne sauvegarde rien, elle sert uniquement à tester le processus. Donc ce n’est pas ça qui a réparé l’installation, mais probablement une des manip précédente ou suivante.

1 Like

Certes. D’ailleurs, j’ai parlé de « tester » le renouvellement avec cette commande. C’est ce que je décris avant (création du dossier vide puis installation du certificat) qui a résolu le problème (en tout cas pour l’instant).

Je confirme l’hypothèse du timer, visible avec

systemctl status certbot.timer

Je ne connaissait pas cette fonctionnalité. Merci pour cet éclaircissement.

1 Like

pardon, j’avais mal compris :slight_smile:

Bonjour,
Je ne sais pas si cela peut aider mais j’avais noté qu’il fallait recharger nginx pour que les nouveaux certificats mis à jour automatiquement par certbot soient pris en compte et pour cela rajouter dans le fichier /etc/letsencrypt/cli.ini ceci,
deploy-hook = service nginx reload
Laurent