Как настроить автоматическое обновление сертификатов Let’s Encrypt с помощью certbot
Let’s Encrypt — это бесплатный центр сертификации, который позволяет выпускать SSL/TLS-сертификаты для сайтов без ручного оформления и оплаты.
Благодаря ему можно легко включить HTTPS на сервере и обеспечить шифрование трафика между пользователем и сайтом.
Сертификаты Let’s Encrypt действуют 90 дней, поэтому важно настроить их автоматическое продление, чтобы сайт не стал внезапно недоступен по HTTPS.
Для этого используется утилита Certbot, которая умеет:
- выпускать новые сертификаты для доменов;
- автоматически продлевать существующие;
- обновлять конфигурации Nginx или Apache;
- уведомлять о возможных ошибках при обновлении.
Установка Certbot
Для начала нужно установить Certbot на сервер.
На Ubuntu это делается одной командой:
sudo apt install certbot python3-certbot-nginx -yЕсли вы используете Apache — поставьте вместо python3-certbot-nginx пакет python3-certbot-apache.
Проверим, что утилита установлена:
certbot --versionПолучение первого сертификата
Предположим, у вас настроен сайт на Nginx с доменом example.com.
Certbot умеет сам находить конфигурации Nginx и добавлять SSL-настройки автоматически.
Выпускаем первый сертификат:
sudo certbot --nginx -d example.com -d www.example.comCertbot:
- подтвердит владение доменом через HTTP-челлендж;
- добавит секцию
listen 443 ssl;и пути к сертификатам в Nginx-конфиг; - создаст директорию
/etc/letsencrypt/live/example.com/со следующими файлами:fullchain.pem— публичный сертификат;privkey.pem— приватный ключ.
После этого сайт уже будет доступен по HTTPS.
Проверка HTTPS-конфигурации
Чтобы убедиться, что всё работает корректно, можно перезапустить сервер и выполнить:
sudo nginx -t
sudo systemctl reload nginxА затем открыть сайт в браузере — зелёный замок в адресной строке означает, что SSL подключен успешно.
Настройка автоматического обновления
Certbot устанавливает системный cron или systemd timer, который сам проверяет срок действия сертификатов и продлевает их при необходимости.
Чтобы убедиться, что автопродление включено, выполните:
sudo systemctl list-timers | grep certbotОбычно таймер certbot.timer выполняется дважды в день.
Также можно вручную протестировать процесс продления:
sudo certbot renew --dry-runЕсли вы видите сообщение Congratulations, all renewals succeeded! — значит всё настроено правильно.
Пример ручной настройки cron-задачи (если нужно)
Если по каким-то причинам systemd недоступен (например, на старом сервере), можно добавить задачу в crontab вручную:
sudo crontab -eИ вставить строку:
0 3 * * * certbot renew --quiet && systemctl reload nginxЭта команда будет выполняться каждый день в 03:00 ночи, проверяя срок действия сертификатов и перезагружая Nginx при обновлении.
Что делать при ошибках обновления
Если сертификат не продлевается, чаще всего причина одна из следующих:
- Сервер недоступен снаружи — Let’s Encrypt не может проверить домен.
- Пути изменены — конфигурация Nginx не соответствует
/.well-known/acme-challenge/. - Истёк DNS-запись — домен больше не указывает на нужный IP.
Посмотреть журнал ошибок можно так:
sudo tail -n 50 /var/log/letsencrypt/letsencrypt.logКак проверить срок действия сертификата
Проверить, когда истекает сертификат, можно одной командой:
sudo openssl x509 -enddate -noout -in /etc/letsencrypt/live/example.com/fullchain.pemТакже удобно использовать Certbot напрямую:
sudo certbot certificatesКак продлить сертификаты вручную
Если вам нужно обновить сертификаты прямо сейчас, просто выполните:
sudo certbot renew
sudo systemctl reload nginxCertbot проверит все домены и продлит те, чей срок действия меньше 30 дней.
Заключение
Certbot — это простой и надёжный инструмент, который позволяет автоматически управлять SSL-сертификатами Let’s Encrypt.
После единовременной настройки вы получаете полностью автоматическую схему:
- HTTPS включён и обновляется без вашего участия;
- сервер сам продлевает сертификаты каждые 60–75 дней;
- Nginx или Apache перезапускаются при необходимости.
Такой подход избавляет от ручной рутины и гарантирует, что ваш сайт всегда будет защищён и доступен по безопасному протоколу HTTPS.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний