Как запланировать шифрования certbot давай, чтобы автоматически продлить срок действия своего сертификата в cron?

Я видел противоречивые рекомендации. От eff.org docs:

Если вы настраиваете задание cron или systemd, мы рекомендуем запускать его дважды в день... Пожалуйста, выберите случайную минуту в течение часа для ваших задач обновления.

Я также видел рекомендации для еженедельные рабочие места.

Я не эксперт cron, поэтому я бы предпочел ответ с подробными шагами для настройки задания cron.

4 ответов


поэтому я решил запланировать его запуск один раз в день. Сначала я тестировал автоматическое обновление как врачи рекомендуют:

sudo letsencrypt renew --dry-run --agree-tos

затем я обновил crontab:

sudo crontab -e

это строка, которую я добавил:

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

это запускает обновление everday в 3: 12 утра. Я предполагаю, что документы рекомендуют "случайную минуту в течение часа" распределить нагрузку на серверы обновления. Поэтому я полагаю, что предпочтительнее все, кроме 0, 15, 30 или 45.

Я посмотрел в рандомизации минуты в настройке cron, как позволяет Дженкинс, но это казалось слишком сложным.

наконец, я протестировал команду cron с помощью судо Баш:

sudo bash -c "letsencrypt renew >> /var/log/letsencrypt/renew.log"

Я недавно (апрель 2018) установил и запустил certbot (версия 0.22.2) на сервере Ubuntu 16.04, и задание cron обновления было создано автоматически в /etc/cron.д/certbot.

вот задание cron, которое было создано:

# /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

пожалуйста, проверьте это, прежде чем ставить новую работу Cron.


я добавил следующую строку /etc/crontab для запуска попытки обновления ежедневно на случайную минуту между 00:00 и примерно 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

работает уже более года.

сама команда renew может отличаться для вас - я использовал webroot, поскольку он казался наиболее надежным в то время.


обычно при запуске certbot для любого веб-сервера на сервере Ubuntu 16.04 он автоматически создает 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