IIAdmin
← На главнуюTLS и сертификаты
Практическое руководство

Автоматическое продление сертификатов Certbot

2026-10-17Источников: 2Тема: tls-04

Практическое руководство: Автоматическое продление сертификатов Certbot. Подготовка, команды, проверка, безопасность и откат.

Задача и общий подход

Материал посвящён теме «Автоматическое продление сертификатов Certbot» с акцентом на журналам, автоматизации и контролю изменений.

Наличие сертификата не гарантирует правильный HTTPS. Важны цепочка доверия, соответствие имени, срок действия, выбранный сертификат на порту и автоматическое продление.

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

Что должно получиться

После выполнения руководства по теме «Автоматическое продление сертификатов Certbot» результат должен быть измеримым:

  • исключить зависимость от временных правил и ручных действий
  • сохранить резервную точку и понятный сценарий отката
  • зафиксировать логи и признаки успешного запуска
  • получить воспроизводимую конфигурацию, проверяемую командами

Когда применять этот порядок

Этот сценарий подходит для следующих ситуаций:

  • плановое внедрение или перенос компонента категории «TLS и сертификаты» на новый VPS
  • изменение портов, домена, сертификата, маршрута или способа публикации сервиса
  • разбор инцидента, когда локальная и внешняя проверки дают разные результаты
  • подготовка к обновлению пакета или восстановлению после неудачного изменения

Как устроена схема

Клиент устанавливает TCP-соединение, передаёт SNI и согласует TLS до обычного HTTP-запроса. HTTP-01 требует доступного порта 80, DNS-01 подтверждает управление DNS-зоной и подходит для wildcard.

Важно разделять конфигурацию, процесс, сетевой сокет и внешний запрос. Успех на одном уровне не доказывает исправность следующего.

Резервная точка

Сохраните именно те файлы и параметры, которые собираетесь менять.

Универсальная фиксация состояния

TS=$(date +%F-%H%M%S)
mkdir -p /root/iiadmin-change-$TS
cp -a /path/to/config /root/iiadmin-change-$TS/
systemctl status SERVICE --no-pager > /root/iiadmin-change-$TS/status-before.txt
ss -lntup > /root/iiadmin-change-$TS/listeners-before.txt

Замените путь и SERVICE. Для активных баз данных используйте штатный экспорт, а не обычный cp.

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

Подготовка перед изменениями

Подготовительный этап снижает риск потерять доступ и смешать несколько причин одной неисправности.

  • Зафиксируйте текущие порты, процессы и состояние службы.
  • Подготовьте команду отката до применения изменений.
  • Используйте встроенную проверку синтаксиса конфигурации.
  • Проверьте свободное место, DNS и системное время.
  • Откройте вторую административную сессию и не закрывайте текущую.

Пошаговая настройка

Выполняйте блоки последовательно и после каждого шага проверяйте код возврата команды.

Таймер

systemctl list-timers --all | grep -i certbot
journalctl -u certbot.timer -n 50 --no-pager

Имя юнита зависит от способа установки.

DNS и порты

dig +short A example.org
ss -lntp | grep -E ':(80|443)\b'
curl -I http://example.org/

Домен должен указывать на нужный сервер, а challenge быть доступен.

Локальный сертификат

sudo openssl x509 -in /etc/letsencrypt/live/example.org/fullchain.pem -noout -subject -issuer -dates

Показывает имя, издателя и срок действия файла.

Сертификат на порту

echo | openssl s_client -connect example.org:443 -servername example.org 2>/dev/null | openssl x509 -noout -subject -issuer -dates

Проверяется сертификат, который реально видит клиент.

Тест продления

sudo certbot renew --dry-run

Выявляет большинство проблем до истечения срока.

Имена доменов, адреса, порты и пути в примерах условные. Перед выполнением замените их фактическими значениями.

Проверка результата

Проверка должна охватывать конфигурацию, процесс, listener и реальный запрос.

  • DNS актуален
  • сертификат содержит имя
  • цепочка полная
  • системное время корректно
  • dry-run успешен

Универсальная проверка

systemctl is-active SERVICE
systemctl status SERVICE --no-pager
journalctl -u SERVICE -n 80 --no-pager
ss -lntup

Замените SERVICE и сохраните вывод рядом с резервной копией.

Диагностика, если не заработало

Диагностика строится как последовательное исключение уровней, а не случайный набор перезапусков.

  1. Подтвердите симптом точной командой и запишите время.
  2. Проверьте конфигурацию штатным тестом.
  3. Проверьте процесс и последние записи журнала.
  4. Убедитесь, что нужный адрес и порт слушаются.
  5. Сравните локальный запрос с запросом извне.
  6. Только затем проверяйте firewall, DNS и маршрут.
  7. Меняйте одну переменную и повторяйте тот же тест.

Для темы «Автоматическое продление сертификатов Certbot» важно не путать открытый firewall с запущенным сервисом: правило доступа не создаёт listener, а активный процесс не гарантирует доступность извне.

Безопасность

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

  • выдавайте файлам конфигурации минимальные права
  • не храните секреты в публикуемых конфигурациях и журналах
  • закрывайте временные порты после завершения теста
  • просматривайте журналы аутентификации и ошибки запуска
  • ограничивайте административный доступ доверенными IP или VPN

Дальнейшее сопровождение

Рабочая конфигурация со временем устаревает и требует контроля.

  • проверяйте журналы ошибок и их размер
  • храните резервную копию вне VPS
  • документируйте нестандартные пути и зависимости
  • контролируйте таймеры, сертификаты и автоматические задания
  • периодически выполняйте тестовое восстановление

Типичные ошибки

Чаще всего восстановление усложняют следующие действия:

  • изменение нескольких компонентов одной командой без промежуточных тестов
  • открытие административного порта для всего интернета
  • перезапуск службы до проверки синтаксиса
  • проверка только локального подключения без внешнего теста
  • игнорирование различий правил IPv4 и IPv6
  • удаление рабочей конфигурации до успешного запуска новой

Откат изменений

Откат выполняется в обратном порядке и с теми же проверками, что использовались после настройки.

  1. вернуть прежние пути сертификата
  2. проверить права ключа
  3. выполнить nginx -t
  4. перезагрузить и повторить openssl-проверку

Не удаляйте неудачную конфигурацию до выяснения причины: она полезна для diff и разбора инцидента.

Контрольный список

Перед тем как считать тему «Автоматическое продление сертификатов Certbot» закрытой, пройдите список:

  • создана резервная копия
  • проверка синтаксиса проходит
  • служба active
  • порт слушается на правильном интерфейсе
  • локальный и внешний тесты успешны
  • в журналах нет новой критической ошибки
  • порядок отката записан
  • временные правила удалены

Что дополнительно сверить в документации

При подготовке материала были сопоставлены разделы русскоязычной документации. Для углублённой проверки полезно изучить:

  • Настройка HTTPS-серверов
  • Как развернуть свой веб-сайт в облаке с помощью Next.js, Django, SSL, DNS
  • План действий
  • Необходимые требования
  • VDS и VPS
  • Настройка сервера
  • Установка нужного комплекта программ
  • Настройка безопасности

Контрольные точки именно для этой темы

Для темы «Автоматическое продление сертификатов Certbot» заранее запишите исходные значения и ожидаемый результат. Это позволяет повторить один и тот же тест до изменения, после применения и после возможного отката.

Не считайте задачу завершённой по одному зелёному статусу. Проверка должна охватывать конфигурацию, процесс, сетевой уровень, журнал и прикладной ответ.

  • DNS актуален
  • сертификат содержит имя
  • цепочка полная
  • системное время корректно
  • dry-run успешен

DNS и порты

dig +short A example.org
ss -lntp | grep -E ':(80|443)\b'
curl -I http://example.org/

Домен должен указывать на нужный сервер, а challenge быть доступен.

Предварительная проверка версии и совместимости

Зафиксируйте текущую версию, источник пакета и локальные изменения конфигурации. Сопоставьте release notes с используемыми директивами и форматами файлов.

Перед обновлением создайте копию и определите способ возврата предыдущей версии, включая зависимости и базу данных.

Данные, которые нужно сохранить до изменения

Перед работой по теме «Автоматическое продление сертификатов Certbot» сохраните состояние именно тех компонентов, которые участвуют в схеме: активную конфигурацию, статус процесса, открытые порты, последние ошибки и результат контрольного запроса. Этот набор позволит отличить последствия новой правки от ранее существовавшего поведения.

Полезно хранить вывод в одном каталоге с временной меткой и коротким README. При разборе инцидента это быстрее, чем повторно собирать сведения после нескольких перезапусков.

Локальный сертификат

sudo openssl x509 -in /etc/letsencrypt/live/example.org/fullchain.pem -noout -subject -issuer -dates

Показывает имя, издателя и срок действия файла.

Продление сертификата как отдельный процесс

Успешная выдача сертификата не гарантирует его автоматическое продление. Проверьте расписание, тестовый renew и действие, которое заставляет веб-сервер перечитать обновлённый файл.

Для wildcard применяется DNS-01. Полная автоматизация возможна только при наличии поддерживаемого DNS API и защищённого хранения токена.

Проверить продление

sudo certbot renew --dry-run
systemctl list-timers --all | grep -i certbot
sudo journalctl -u certbot.timer -n 60 --no-pager

Имя timer может отличаться в зависимости от способа установки Certbot.

Источники и документация

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