Каждые три месяца мой сертификат Let's Encrypt истекает, и мои клиенты получают недействительный сертификат https.
Итак, я недавно разместил следующую задачу cron:
@weekly certbot renew --quiet && service nginx reload
Насколько я понимаю, когда certbot renew
успешно обновить сертификат, он возвращает состояние успеха (exit (0)), поэтому &&
следует, и поэтому nginx перезагружается.
Да, но это не работает. Недавно мой сервер снова показывал просроченный сертификат, поэтому я определенно что-то неправильно понял, и / или моя задача cron не подходит.
Не могли бы вы показать мне путь? :)
лучший подход - использовать --renew-hook
который может вызывать скрипт. Также --no-self-upgrade
хороший вариант для автоматического продления, эта опция предотвращает обновления во время продления, которые могут что-то сломать
запись cron может быть
certbot renew --quiet --no-self-upgrade --renew-hook /path/to/hook.sh
hook.sh
#!/bin/sh
set -e
nginx -t -q && nginx -s reload
exit 0
Этот скрипт вызывается только тогда, когда происходит действие обновления, а не каждую неделю.
полное объяснение находится на странице руководства или в документации