Comment programmer le chiffrement de certbot pour renouveler automatiquement mon certificat en cron?
j'ai vu des recommandations contradictoires. De la eff.org docs!-2-->:
si vous mettez en place 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 aussi vu des recommandations pour hebdomadaire des emplois.
Je ne suis pas un expert en cron, donc je préférerais une réponse avec des étapes détaillées pour mettre en place le travail de cron.
4 réponses
alors j'ai décidé de le faire tourner une fois par jour. J'ai d'abord testé le renouvellement automatique les docs recommandons:
sudo letsencrypt renew --dry-run --agree-tos
Ensuite, j'ai mis à jour la crontab:
sudo crontab -e
Voici la ligne que j'ai ajoutée:
12 3 * * * letsencrypt renew >> /var/log/letsencrypt/renew.log
ceci exécute le "renew everday" à 3h12. Je suppose que les docs recommandent "une minute aléatoire dans l'heure" pour distribuer la charge sur les serveurs renew. Donc je suppose que tout autre que 0, 15, 30, ou 45 est préférable.
j'ai regardé dans randomisation de la minute dans le cron cadre, comme Jenkins permet de le faire, mais cela semblait trop compliqué.
finalement, j'ai testé la commande cron en utilisant sudo bash:
sudo bash -c "letsencrypt renew >> /var/log/letsencrypt/renew.log"
j'ai récemment (avril 2018) installé et lancé certbot (version 0.22.2) sur un serveur Ubuntu 16.04, et un travail de renouvellement cron a été créé automatiquement dans /etc/cron.d / certbot.
Voici l'emploi 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
s'il vous Plaît vérifier avant de mettre une nouvelle tâche Cron.
j'ai ajouté la ligne suivante /etc/crontab
exécuter tentative de renouvellement par jour aléatoire minute 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 très bien depuis plus d'un an maintenant.
la commande renew elle - même peut varier pour vous-j'ai utilisé webroot car il semblait le plus robuste à l'époque.
normalement quand vous exécutez un certbot pour n'importe quel serveur web dans un serveur Ubuntu 16.04 il crée automatiquement un 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