Как запланировать шифрования 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