web-dev-qa-db-fra.com

Comment puis-je planifier le certbot Let's Encrypt pour qu'il renouvelle automatiquement mon certificat dans cron?

J'ai vu des recommandations contradictoires. Du eff.org docs :

si vous configurez un travail cron ou systemd, nous vous recommandons de l'exécuter deux fois par jour ... Veuillez sélectionner une minute aléatoire dans l'heure pour vos tâches de renouvellement.

J'ai également vu des recommandations pour des emplois hebdomadaires .

Je ne suis pas un expert cron, je préférerais donc une réponse avec des étapes détaillées pour configurer le travail cron.

16
Chapman Atwell

Je me suis donc décidé à le programmer une fois par jour. J'ai d'abord testé le renouvellement automatique en tant que la documentation recommande :

Sudo letsencrypt renew --dry-run --agree-tos

Puis j'ai mis à jour la crontab:

Sudo crontab -e

C'est la ligne que j'ai ajoutée:

12 3 * * *   letsencrypt renew >> /var/log/letsencrypt/renew.log

Ceci est renouvelé tous les jours à 3h12. Je présume que les docs recommandent "une minute aléatoire dans l'heure" pour répartir la charge sur les serveurs de renouvellement. Donc, je suppose que rien d’autre que 0, 15, 30 ou 45 n’est préférable.

J'ai regardé dans randomiser la minute dans le réglage cron, comme Jenkins le permet, mais cela semblait trop compliqué.

Enfin, j'ai testé la commande cron avec Sudo bash :

Sudo bash -c "letsencrypt renew >> /var/log/letsencrypt/renew.log"
24
Chapman Atwell

J'ai récemment (avril 2018) installé et exécuté certbot (version 0.22.2) sur un serveur Ubuntu 16.04, et un travail périodique de renouvellement a été créé automatiquement dans /etc/cron.d/certbot.

Voici le travail cron qui a été créé:

# /etc/cron.d/certbot: crontab entries for the certbot package
#
# Upstream recommends attempting renewal twice a day
#
# Eventually, this will be an opportunity to validate certificates
# haven't been revoked, etc.  Renewal will only occur if expiration
# is within 30 days.
Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && Perl -e 'sleep int(Rand(3600))' && certbot -q renew

Veuillez vérifier ceci avant de mettre un nouveau travail Cron.

15
V-Q-A NGUYEN

Dans Debian Jessie et plus (y compris Ubuntu) cron n’est pas exécuté pour le renouvellement de Certbot . À la place, le temporisateur systemd est utilisé. Voir minuterie: /lib/systemd/system/certbot.timer

Ce temporisateur exécute le service suivant: /lib/systemd/system/certbot.service

Qui contient:

[Service]
Type=oneshot
ExecStart=/usr/bin/certbot -q renew
PrivateTmp=true

Pour lister tous les timers, exécutez la commande suivante dans le terminal:

systemctl list-timers

Espérons que Certbot en fait partie:

Lun. 2019-02-04 08:38:45 CET 9h restantes dim 2019-02-03 15:25:41 CET Il y a 8h certbot.timer certbot.service

2
danger89

Normalement, lorsque vous exécutez un certbot pour n’importe quel serveur Web sur un serveur Ubuntu 16.04, il crée automatiquement un fichier cron. 

#cat /etc/cron.d/certbot

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && Perl -e 'sleep int(Rand(3600))' && certbot -q renew
1
Javeed Shakeel

J'ai ajouté la ligne suivante à /etc/crontab pour exécuter la tentative de renouvellement daily sur une minute aléatoire entre 00:00 et environ 16:40 :

1  1    * * *   root    sleep ${RANDOM:0:3}m && /home/admin/certbot-auto renew --quiet --no-self-upgrade --authenticator webroot --installer Apache -w /var/www/mywebroot

Fonctionne bien depuis plus d'un an maintenant.

La commande de renouvellement elle-même peut varier pour vous - j'ai utilisé webroot car il semblait plus robuste à ce moment-là.

0
andruso