Сертификат SSL истек: как перевыпустить Let's Encrypt через Certbot
Симптомы истечения SSL-сертификата
Посетители сайта сталкиваются с красным экраном предупреждения NET::ERR_CERT_DATE_INVALID или SEC_ERROR_EXPIRED_CERTIFICATE. Поисковые системы мгновенно пессимизируют сайт, а платежные шлюзы блокируют транзакции.
Причины, почему автопродление не сработало
| Причина | Что происходит |
|---|---|
| Заблокирован порт 80 | Certbot не может пройти проверку домена HTTP-01 |
| Изменился IP сервера | DNS-запись указывает на старый сервер |
| Сбой таймера systemd | Служба certbot.timer была случайно отключена |
Ручной перевыпуск и проверка автообновления
- Тестируем процесс обновления в холостом режиме (Dry-run):
sudo certbot renew --dry-run - Принудительно перевыпускаем все истекшие сертификаты:
sudo certbot renew --force-renewal - Если Certbot выдает ошибку занятого порта 80, перезагружаем веб-сервер:
# Для Nginx: sudo systemctl reload nginx # Для Apache: sudo systemctl reload apache2 - Если сертификат сломан полностью, выпускаем новый заново:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com - Проверяем статус таймера автоматического продления:
sudo systemctl status certbot.timer
Убедитесь, что в фаерволе открыт порт 80 (HTTP). Let's Encrypt проверяет валидность домена всегда через порт 80, даже если сайт работает только по HTTPS (порт 443).
Частые вопросы (FAQ)
На какой срок выдается сертификат Let's Encrypt?
Бесплатный сертификат действует 90 дней. Certbot пытается автоматически обновлять его каждые 60 дней.
Как проверить точную дату окончания сертификата через консоль?
Выполните команду: sudo certbot certificates.
Что означает ошибка Problem binding to port 80: Could not bind to IPv4 or IPv6?
Порт 80 занят другим веб-сервером. Используйте плагин --nginx или временно остановите службу перед certbot certonly --standalone.
Как настроить автоматический перезапуск Nginx после каждого продления?
Добавьте хук в /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh: systemctl reload nginx.