Apache Linux (Apache HTTP Server 2.4)

Apache — после продления сертификата сайт продолжает выдавать старую цепочку

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

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

После продления сертификата Apache HTTP Server 2.4 может отдавать старый сертификат или неполную цепочку, если VirtualHost читает другой файл, включается другой SSL-виртуальный сервер или TLS завершается во внешнем прокси. Сравнивайте выдаваемый комплект, а не только сертификат на диске.

В этой статье
  1. Симптом и границы применимости
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Как проверить результат
  5. Если проблема не устранена

#Симптом и границы применимости

После продления сертификата Apache HTTP Server 2.4 может отдавать старый сертификат или неполную цепочку, если VirtualHost читает другой файл, включается другой SSL-виртуальный сервер или TLS завершается во внешнем прокси. Сравнивайте выдаваемый комплект, а не только сертификат на диске.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
SSLCertificateFile указывает на старый файлОбновление сертификата в соседней папке не меняет конфигурацию.Дата файла на диске новая, но в VirtualHost другой путьСверить именно активный SSL-виртуальный хост
Сертификат не перечитанApache читает сертификаты при запуске конфигурации.После restart/reload в тестовом окружении цепочка меняетсяПроверить журнал перезагрузки и синтаксис
TLS завершается на прокси или ином IPПрокси может хранить и выдавать собственный сертификат.На origin новая цепочка, публично стараяПроверить CDN, IPv6 и балансировщик

#Пошаговая диагностика и исправление

  1. Посмотрите выдаваемую цепочку извнеНа компьютере с OpenSSL откройте терминал, подставьте домен. Флаг -servername задаёт SNI, -showcerts показывает все сертификаты, переданные сервером. Сравните даты первого сертификата и наличие промежуточных: предупреждения браузера могут быть вызваны и чужой цепочкой.
    Linux · Терминал (Bash)Команда
    Linux/macOS или Windows с OpenSSL; пример без изменения сервера.
    openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
  1. Узнайте версию и активный VirtualHostПо SSH проверьте Apache 2.4, полный список виртуальных хостов и конфигурационный путь. На Debian команда apache2ctl, в RHEL может быть apachectl или httpd; на сервере с Nginx перед Apache сначала определите, какой процесс слушает внешний 443.
    Linux · Терминал (Bash)КомандаНужен sudo
    Debian/Ubuntu пример; -S показывает привязки портов и файлы. Только чтение.
    sudo apache2ctl -S; sudo ss -lntp | grep ":443"
  1. Сверьте директивы SSL в нужном хостеВ файле из -S найдите SSLCertificateFile, SSLCertificateKeyFile, ServerName и ServerAlias. Сверьте путь с тем, где агент продления сохранил полный PEM-комплект. В Apache 2.4.8+ цепочка промежуточных может находиться в SSLCertificateFile; отдельная SSLCertificateChainFile устарела. Не публикуйте закрытый ключ.
  2. Путь для Debian/Ubuntu, RHEL обычно /etc/httpd/conf.d; файл ключа не открывайте
    Linux · Терминал (Bash)КомандаНужен sudo
    Путь для Debian/Ubuntu, RHEL обычно /etc/httpd/conf.d; файл ключа не открывайте.
    sudo grep -R -nE "SSLCertificate(File|KeyFile|ChainFile)|ServerName|ServerAlias" /etc/apache2/sites-enabled/
  1. Проверьте фактический файл сертификатаУзнайте дату начала/окончания и subject/issuer из файла, который указан в конфигурации. Это проверяет первый сертификат в PEM, но не всю цепочку. Если сертификат от другого домена, восстановите правильный комплект перед reload.
  2. Путь примерный, заменить на фактический SSLCertificateFile
    Linux · Терминал (Bash)КомандаНужен sudo
    Путь примерный, заменить на фактический SSLCertificateFile.
    sudo openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -noout -subject -issuer -dates
  1. Исключите внешнее завершение TLSВ панели DNS проверьте A и AAAA, у CDN — сертификат на внешнем узле. Для прямой проверки origin указывайте точный IP и SNI, не отключая проверку HTTPS у пользователей. Не редактируйте Apache, пока не установлено, что он действительно отвечает клиенту.
  1. Примените исправление после копии конфигурацииСохраните копию SSL VirtualHost, укажите проверенный файл полной цепочки, проверьте apache2ctl -t: ожидается Syntax OK. При ином результате откатите файл. Затем выполните штатную перезагрузку службы (имя apache2 на Debian, httpd на RHEL).
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Debian/Ubuntu; для RHEL имя службы httpd и другая команда теста. Reload влияет на все сайты экземпляра.
    sudo apache2ctl -t && sudo systemctl reload apache2

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Как проверить результат

Повторите openssl s_client с публичного адреса по IPv4 и IPv6 с правильным SNI. Убедитесь, что передаётся новое leaf-свидетельство, верная цепочка и браузер открывает HTTPS без предупреждений.

#Если проблема не устранена

Если origin отдаёт новый комплект, а публика — старый, исследуйте внешний TLS-прокси. Если на одном IP новый, а на другом старый, проверяйте DNS, балансировщик и каждый SSL VirtualHost.

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

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

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