Как обновить и автопродлить SSL-сертификат Certbot: полное руководство
Пошаговая инструкция по продлению сертификатов Let's Encrypt с помощью Certbot и настройке автоматизации
Введение
Сертификаты Let's Encrypt действуют 90 дней. Чтобы сайт не остался без HTTPS, их нужно вовремя продлевать. Certbot — официальный клиент, который автоматизирует этот процесс. В статье расскажем, как обновить сертификат вручную, настроить автопродление и избежать типичных ошибок.
Требования
Установленный Certbot (версия 1.0 и выше).
Доступ к серверу по SSH с правами sudo.
Настроенный веб-сервер (Nginx или Apache) с работающим сайтом.
Открытые порты 80 и 443.
Действующий сертификат, полученный через Certbot.
Шаг 1: Проверка текущего сертификата
Перед обновлением убедитесь, что сертификат существует и скоро истекает. Выполните:
sudo certbot certificatesКоманда покажет список сертификатов, их срок действия и пути к файлам. Если сертификат истекает в ближайшие 30 дней, пора продлевать.
Шаг 2: Ручное обновление сертификата
Для ручного продления всех сертификатов используйте:
sudo certbot renewCertbot проверит каждый сертификат и обновит те, что истекают менее чем через 30 дней. Если нужно обновить конкретный сертификат, укажите его имя:
sudo certbot renew --cert-name example.comПосле обновления перезапустите веб-сервер, чтобы он подхватил новые файлы:
sudo systemctl reload nginxШаг 3: Тестовый запуск (dry-run)
Перед настройкой автоматизации проверьте, что обновление пройдёт без ошибок:
sudo certbot renew --dry-runЭта команда имитирует продление, не изменяя реальные файлы. Если ошибок нет, можно переходить к автоматизации.
Шаг 4: Автоматическое продление через systemd таймер
Современные версии Certbot устанавливают systemd таймер certbot.timer, который запускает проверку дважды в день. Проверьте его статус:
sudo systemctl status certbot.timerЕсли таймер не активен, включите и запустите его:
sudo systemctl enable certbot.timer
sudo systemctl start certbot.timerУбедитесь, что таймер работает:
sudo systemctl list-timers | grep certbotШаг 5: Настройка автоматического перезапуска веб-сервера
После обновления сертификата веб-сервер должен перезагрузиться. Certbot поддерживает хуки — скрипты, выполняемые до или после обновления. Создайте файл /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh:
sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy
sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shДобавьте:
#!/bin/bash
systemctl reload nginxСделайте файл исполняемым:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shТеперь после каждого успешного обновления Nginx будет перезагружен.
Шаг 6: Альтернатива — cron
Если systemd таймер недоступен, используйте cron. Откройте crontab для root:
sudo crontab -eДобавьте строку:
0 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"Это запускает проверку ежедневно в 3:00 и перезагружает Nginx после обновления.
Шаг 7: Проверка логов
Certbot ведёт логи в /var/log/letsencrypt/letsencrypt.log. Проверьте последние записи:
tail -n 50 /var/log/letsencrypt/letsencrypt.logИщите сообщения об успешном обновлении или ошибки.
Шаг 8: Обновление сертификата вручную с указанием домена
Если нужно обновить только один домен, используйте:
sudo certbot certonly --force-renewal -d example.com -d www.example.comФлаг --force-renewal заставляет Certbot обновить сертификат, даже если срок ещё не подошёл. Будьте осторожны: Let's Encrypt имеет лимиты на количество запросов.
Типичные ошибки
Ошибка проверки домена: убедитесь, что DNS-записи указывают на ваш сервер и порт 80 доступен извне.
Конфликт с веб-сервером: если Nginx/Apache занимает порт 80, используйте плагин
--webrootили остановите сервер на время обновления.Просроченный сертификат: если сертификат уже истёк, сначала обновите его вручную, затем настройте автоматизацию.
Не работает таймер: проверьте, что systemd активен и таймер включён.
Лимиты Let's Encrypt: не запускайте
--force-renewalслишком часто.
FAQ
Как часто нужно обновлять сертификат? Let's Encrypt выдаёт сертификаты на 90 дней. Certbot автоматически обновляет их за 30 дней до истечения.
Можно ли обновить сертификат без простоя сайта? Да, при использовании плагина --webroot или --nginx обновление происходит без остановки сервера.
Что делать, если автопродление не сработало? Проверьте логи, запустите certbot renew --dry-run для диагностики, убедитесь, что таймер или cron работают.
Как проверить, что сертификат обновился? Используйте certbot certificates или откройте сайт в браузере и посмотрите срок действия сертификата.
Итог
Certbot значительно упрощает управление SSL-сертификатами. Регулярно проверяйте срок действия, настройте автоматическое продление через systemd таймер или cron, и ваш сайт всегда будет защищён. Не забывайте про тестовый запуск и мониторинг логов, чтобы избежать неожиданных проблем.
Читайте также
DeepSeek и Moonshot приписывают обучение новых моделей на ответах GPT-6 Astra
Honor представила смартфон X9e s с батареей 8560 мА·ч — в СНГ у него есть близнец Turbo 5G
Anthropic предупредила инвесторов об экзистенциальных рисках своего ИИ в документах к IPO
Google запустила браузерную игру Odd One Out: нужно найти ИИ-картинку среди фрагментов реальных картин
Комментарии
Комментарии доступны только зарегистрированным пользователям. Войти
- Пока нет комментариев. Будьте первым.
