Как настроить автоматическое продление SSL-сертификатов Certbot на Linux с помощью задания cron?

Автоматическое продление SSL-сертификатов Certbot через cron — стандартная практика для поддержания безопасности сайта без ручного вмешательства. Сертификаты Let’s Encrypt действуют 90 дней, поэтому важно настроить регулярную проверку и обновление заблаговременно.

## Шаг 1: Убедитесь, что Certbot установлен

Проверьте наличие Certbot командой:

certbot —version

Если не установлен, выполните (для Ubuntu/Debian):

sudo apt update && sudo apt install certbot

## Шаг 2: Проверьте команду продления вручную

Перед добавлением в cron убедитесь, что команда работает корректно:

sudo certbot renew —dry-run

Флаг `—dry-run` выполняет тестовое продление без реального изменения сертификатов. Если ошибок нет — можно переходить к настройке cron.

## Шаг 3: Откройте редактор crontab

Откройте crontab для пользователя root:

sudo crontab -e

## Шаг 4: Добавьте задание cron

Добавьте следующую строку для проверки дважды в день (рекомендация Let’s Encrypt):

0 3,15 * * * certbot renew —quiet —post-hook «systemctl reload nginx»

Расшифровка:
— `0 3,15 * * *` — запуск каждый день в 03:00 и 15:00;
— `certbot renew` — команда продления;
— `—quiet` — подавляет вывод при отсутствии ошибок;
— `—post-hook «systemctl reload nginx»` — перезагружает Nginx после успешного обновления сертификата.

Если используете Apache, замените `nginx` на `apache2`.

## Шаг 5: Логирование ошибок

Для записи ошибок в лог добавьте перенаправление:

0 3,15 * * * certbot renew —quiet —post-hook «systemctl reload nginx» >> /var/log/certbot-renew.log 2>&1

## Альтернатива: systemd timer

На современных дистрибутивах Certbot при установке через snap или пакетный менеджер автоматически создаёт systemd-таймер. Проверить его можно командой:

sudo systemctl status certbot.timer

Если таймер активен, дополнительная настройка cron не требуется.

## Важные рекомендации

— Certbot продлевает сертификат только если до истечения осталось менее 30 дней — частые запуски безопасны.
— Убедитесь, что порты 80 и 443 открыты во время продления.
— Регулярно проверяйте лог-файлы на наличие ошибок.
— Используйте `—deploy-hook` вместо `—post-hook`, если хотите выполнять команду только при фактическом обновлении сертификата.

Правильно настроенный cron гарантирует бесперебойную работу HTTPS на вашем сервере без необходимости ручного вмешательства.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.