Шаг 1: Проверяем, что сертификаты работают
# Смотрим какие сертификаты есть и когда истекают
sudo certbot certificates
# Тестируем обновление (без реального обновления)
sudo certbot renew --dry-run
Демонстрация процесса в консоли:



Шаг 2: Проверяем, может автообновление уже настроено
# Проверяем cron задачи
sudo crontab -l | grep certbot
# Проверяем системные таймеры
systemctl list-timers | grep certbot
# Проверяем папку cron.d
ls -la /etc/cron.d/ | grep certbot
Если увидели certbot в любой из команд — автообновление уже работает! Ничего делать не нужно.
Шаг 3: Если автообновления нет — настраиваем
Вариант А: Через systemd
# Создаем сервис
sudo tee /etc/systemd/system/certbot-renewal.service << 'EOF'
[Unit]
Description=Certbot Renewal
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --quiet --post-hook 'systemctl reload nginx'
EOF
# Создаем таймер (будет запускать 2 раза в день)
sudo tee /etc/systemd/system/certbot-renewal.timer << 'EOF'
[Unit]
Description=Run certbot twice daily
[Timer]
OnCalendar=*-*-* 00,12:00:00
RandomizedDelaySec=3600
Persistent=true
[Install]
WantedBy=timers.target
EOF
# Включаем таймер
sudo systemctl daemon-reload
sudo systemctl enable --now certbot-renewal.timer
# Проверяем что работает
sudo systemctl status certbot-renewal.timer
systemctl list-timers | grep certbot
Вариант Б: Через cron
# Добавляем в cron
(sudo crontab -l 2>/dev/null; echo "0 3 * * * /usr/bin/certbot renew --quiet --post-hook 'systemctl reload nginx'") | sudo crontab -
# Проверяем что добавилось
sudo crontab -l
Шаг 4: Настраиваем логирование
# Добавляем в cron
(sudo crontab -l 2>/dev/null; echo "0 3 * * * /usr/bin/certbot renew --quiet --post-hook 'systemctl reload nginx'") | sudo crontab -
# Проверяем что добавилось
sudo crontab -l
Шаг 5: Тестируем что все работает
# Принудительно запускаем обновление для теста
sudo certbot renew --dry-run
# Если используете systemd timer - тестируем его
sudo systemctl start certbot-renewal.service
sudo systemctl status certbot-renewal.service
# Смотрим логи
sudo journalctl -u certbot-renewal.service
Шаг 6: Финальная проверка
# Смотрим когда будет следующее обновление
systemctl list-timers | grep certbot
# ИЛИ для cron
sudo crontab -l | grep certbot
Что происходит дальше:
- Каждый день в 3 ночи (или 2 раза в день для systemd) certbot проверяет сертификаты
- Если до истечения < 30 дней — сертификат обновляется автоматически
- После обновления — Nginx перезагружается автоматически
- Вы получаете новый сертификат без вашего участия
Если что-то не работает:
# Смотрим логи
sudo tail -50 /var/log/letsencrypt/letsencrypt.log
# Проверяем права
ls -la /etc/letsencrypt/
# Пробуем обновить вручную
sudo certbot renew --force-renewal
Готово! Теперь сертификаты будут обновляться автоматически и вы никогда не получите ошибку об истекшем сертификате!