Apache Linux

Apache: сертификат SSL истёк — как обновить (Let's Encrypt)

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Истёкший сертификат вызывает предупреждения у посетителей. Обновите его через certbot, проверьте автоматическое продление и перезагрузите Apache.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Проверка
  5. Let's Encrypt
  6. Коммерческий сертификат

#Что означает ошибка

Сообщение
Сертификат недействителен

Если сертификат на Apache просрочился, браузеры показывают NET::ERR_CERT_DATE_INVALID. Обновление зависит от источника: Let's Encrypt обновляется через certbot, коммерческий сертификат нужно перевыпустить и заменить файлы.

Сначала проверьте дату окончания и то, какой файл читает Apache.

Частая причина — certbot продлил сертификат, но Apache не перечитал конфигурацию.

Истёкший сертификат вызывает предупреждения у посетителей. Обновите его через certbot, проверьте автоматическое продление и перезагрузите Apache.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Не работает автопродлениеCron.Истёк.Настройте.
Порт 80 закрытПроверка.Ошибка.Откройте.
Неверный VirtualHostДомен.Ошибка.Исправьте.
Старый certbotВерсия.Ошибка.Обновите.

#Пошаговое решение

  1. Проверьте срокНа рабочем компьютере или сервере выполните openssl s_client -connect example.ru:443 -servername example.ru (замените домен); для просмотра даты сертификата используйте передачу вывода в openssl x509 -noout -dates. Сравните notAfter с текущей датой. Если сервер отдаёт другой сертификат по SNI, исправляйте выбор виртуального хоста, а не продлевайте чужой сертификат.
  2. Найдите используемые файлыПо SSH найдите действующие директивы Apache SSLCertificateFile и SSLCertificateKeyFile через sudo grep -R "SSLCertificate" /etc/apache2 (на RHEL путь другой). Сопоставьте файлы с нужным виртуальным хостом *:443, запишите текущие пути и сохраните копию конфигурации. Для Let’s Encrypt сертификат нередко лежит в /etc/letsencrypt/live/имя_домена/.
  3. Обновите сертификатЕсли используется Certbot и домен действительно обслуживается им, сначала выполните sudo certbot certificates, затем sudo certbot renew --dry-run, чтобы проверить возможность автоматического продления. Если тест не прошёл, читайте его ошибку о DNS, доступе к порту 80 или DNS-01; не запускайте бесконечно renew. Для ручного сертификата продлевайте его у своего удостоверяющего центра.
    Linux · Терминал (Bash)КомандаНужен sudo
    Проверка продления.
    sudo certbot renew --dry-run
  4. Проверьте конфигурациюПосле успешного получения нового сертификата выполните sudo apachectl configtest (или apache2ctl configtest), убедитесь в Syntax OK; затем sudo systemctl reload apache2 или httpd согласно системе. Если применить не удалось, верните сохранённый виртуальный хост, а не отключайте SSL.
  5. Перезагрузите ApacheОткройте HTTPS-страницу с другого устройства и повторно проверьте серверный сертификат через OpenSSL с нужным -servername. Убедитесь, что дата продления изменилась, цепочка доверия полная и сайт открывается без предупреждений; при несоответствии проверьте балансировщик или CDN, который может предъявлять свой сертификат.

#Проверка

Выполните echo | openssl s_client -connect сайт:443 -servername сайт 2>/dev/null | openssl x509 -noout -dates. Для файла: openssl x509 -in /etc/letsencrypt/live/сайт/cert.pem -noout -enddate. Сравните с датой в браузере. Проверьте пути SSLCertificateFile и SSLCertificateKeyFile в конфигурации: grep -R "SSLCertificate" /etc/apache2/.

#Let's Encrypt

Выполните sudo certbot renew --dry-run, затем sudo certbot renew. Если ошибка проверки, убедитесь, что порт 80 открыт, а .well-known/acme-challenge доступен. Перезапустите: sudo systemctl reload apache2. Добавьте хук: --deploy-hook "systemctl reload apache2". Проверьте таймер: systemctl list-timers | grep certbot.

#Коммерческий сертификат

Сгенерируйте CSR (openssl req -new -newkey rsa:2048 -nodes -keyout site.key -out site.csr), получите сертификат у центра сертификации, установите SSLCertificateFile (сертификат) и SSLCertificateChainFile/SSLCACertificateFile (цепочка). Проверьте конфигурацию: apachectl configtest и перезагрузите.

Linux · Терминал (Bash)КомандаНужен sudo
Продление сертификата Let's Encrypt и перезагрузка Apache.
sudo certbot renew --dry-run
sudo certbot renew
sudo apachectl configtest && sudo systemctl reload apache2

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.