Сертификаты от Let’s Encrypt стали стандартом для бесплатной автоматической защиты сайтов по HTTPS. Но в любой момент можно столкнуться с проблемой: сертификаты не обновляются, срок действия истекает, сайт выдаёт ошибку безопасности, а клиенты теряют доверие. В этой статье разберём, почему перестают обновляться сертификаты Let’s Encrypt, как это быстро исправить, и что делать, чтобы защитить свой проект от подобных сбоев навсегда.
Почему не обновляются сертификаты Let’s Encrypt?
Причин может быть несколько. Вот самые частые из них:
- Проблемы с DNS (домен не резолвится, A/AAAA-запись не ведёт на ваш сервер)
- Неправильные права на папку webroot (например, /var/www/html/.well-known/acme-challenge)
- Порты 80 и 443 заблокированы firewall или не проброшены до сервера
- Истёкший или неправильный email в настройках certbot/letsencrypt
- Неправильно настроенный cron/job или systemd timer для автообновления
- Let’s Encrypt заблокировал домен за частые ошибки (rate limit)
- Блокировка со стороны nginx, apache или другого reverse-proxy (не отдаётся challenge)
- Проблемы на стороне Let’s Encrypt (редко, но бывает, можно проверить статус здесь)
Как узнать причину?
1. Проверьте статус SSL через hstq.net/ssl-check.html — сервис покажет, активен ли сертификат, и не заблокирован ли домен.
2. Проверьте логи обновления:
- Для certbot:
sudo journalctl -u certbot
sudo cat /var/log/letsencrypt/letsencrypt.log
- Для других клиентов (acme.sh, win-acme) — см. документацию.
3. Проверьте, открыты ли порты 80/443 из внешней сети:
nc -zv yourdomain.com 80
nc -zv yourdomain.com 443
4. Перейдите по адресу http://yourdomain.com/.well-known/acme-challenge/test.txt — если видите 404 или 403, значит challenge не проходит.
5. Посмотрите, нет ли ошибок в конфиге nginx/apache (location / или redirects).
Самое простое и быстрое решение (работает в 95% случаев)
Шаг 1. Проверьте и перезапустите certbot вручную
Для большинства серверов (Ubuntu/Debian/CentOS/AlmaLinux):
sudo systemctl stop nginx
sudo certbot renew --force-renewal
sudo systemctl start nginx
Если используете Apache: замените nginx на apache2.
Шаг 2. Убедитесь, что порты 80/443 открыты
sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload
(или используйте firewalld — sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --reload)
Шаг 3. Обновите certbot до последней версии
sudo apt update
sudo apt install --only-upgrade certbot
(или для CentOS/AlmaLinux — sudo yum update certbot)
Шаг 4. Проверьте, что в cron или systemd есть задача автообновления
Для cron:
sudo crontab -l
# должна быть строка типа:
# 0 4 * * * certbot renew --quiet
Для systemd:
sudo systemctl list-timers | grep certbot
Шаг 5. (По необходимости) Используйте webroot-режим
Если стандартный certbot renew не работает — попробуйте так (замените путь и домен на свой):
sudo certbot certonly --webroot -w /var/www/html -d yourdomain.com --force-renewal
Если не помогло — что делать дальше?
- Проверьте правильность DNS-записей для домена (A/AAAA должны указывать на IP сервера).
- Если сайт на Cloudflare — проверьте настройки “Proxy” (для обновления лучше временно выключить проксирование).
- Проверьте, нет ли блокировки .well-known в конфиге nginx или .htaccess.
- Посмотрите на ограничения в статусе Let’s Encrypt.
- Если используете панели типа ISPmanager, VestaCP, Hestia — проверьте логи панели.
Советы для автоматизации и профилактики
- Обновите certbot или используемый клиент до последней версии (старые версии часто перестают работать).
- Используйте почту, к которой всегда есть доступ — туда приходят важные уведомления от Let’s Encrypt.
- Настройте алертинг (например, через UptimeRobot или мониторинг от HSTQ) на срок действия сертификатов.
- Храните резервные ключи и конфиги в защищённом месте (например, в /root/letsencrypt-backup/).
Почему стоит доверить обслуживание SSL-команде HSTQ?
- Поможем выявить и исправить любые проблемы с обновлением SSL-сертификатов.
- Настроим автоматическое продление, алерты и мониторинг.
- Гарантируем работу сайта 24/7 — без ошибок и “красных” замков в браузере.
P.S. Даже если ошибка кажется “глухой” — чаще всего она решается за 5–10 минут при правильном подходе.
Если нет времени разбираться — пишите в поддержку HSTQ: @hstq_hosting, мы решим всё “под ключ”.