#Симптом и границы применимости
После продления сертификата Apache HTTP Server 2.4 может отдавать старый сертификат или неполную цепочку, если VirtualHost читает другой файл, включается другой SSL-виртуальный сервер или TLS завершается во внешнем прокси. Сравнивайте выдаваемый комплект, а не только сертификат на диске.
#Возможные причины и как их отличить
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| SSLCertificateFile указывает на старый файлОбновление сертификата в соседней папке не меняет конфигурацию. | Дата файла на диске новая, но в VirtualHost другой путь | Сверить именно активный SSL-виртуальный хост |
| Сертификат не перечитанApache читает сертификаты при запуске конфигурации. | После restart/reload в тестовом окружении цепочка меняется | Проверить журнал перезагрузки и синтаксис |
| TLS завершается на прокси или ином IPПрокси может хранить и выдавать собственный сертификат. | На origin новая цепочка, публично старая | Проверить CDN, IPv6 и балансировщик |
#Пошаговая диагностика и исправление
- Посмотрите выдаваемую цепочку извнеНа компьютере с OpenSSL откройте терминал, подставьте домен. Флаг -servername задаёт SNI, -showcerts показывает все сертификаты, переданные сервером. Сравните даты первого сертификата и наличие промежуточных: предупреждения браузера могут быть вызваны и чужой цепочкой.Linux · Терминал (Bash)КомандаLinux/macOS или Windows с OpenSSL; пример без изменения сервера.
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
- Узнайте версию и активный VirtualHostПо SSH проверьте Apache 2.4, полный список виртуальных хостов и конфигурационный путь. На Debian команда apache2ctl, в RHEL может быть apachectl или httpd; на сервере с Nginx перед Apache сначала определите, какой процесс слушает внешний 443.Linux · Терминал (Bash)КомандаНужен sudoDebian/Ubuntu пример; -S показывает привязки портов и файлы. Только чтение.
sudo apache2ctl -S; sudo ss -lntp | grep ":443"
- Сверьте директивы SSL в нужном хостеВ файле из -S найдите SSLCertificateFile, SSLCertificateKeyFile, ServerName и ServerAlias. Сверьте путь с тем, где агент продления сохранил полный PEM-комплект. В Apache 2.4.8+ цепочка промежуточных может находиться в SSLCertificateFile; отдельная SSLCertificateChainFile устарела. Не публикуйте закрытый ключ.
- Путь для 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/
- Проверьте фактический файл сертификатаУзнайте дату начала/окончания и subject/issuer из файла, который указан в конфигурации. Это проверяет первый сертификат в PEM, но не всю цепочку. Если сертификат от другого домена, восстановите правильный комплект перед reload.
- Путь примерный, заменить на фактический SSLCertificateFileLinux · Терминал (Bash)КомандаНужен sudoПуть примерный, заменить на фактический SSLCertificateFile.
sudo openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -noout -subject -issuer -dates
- Исключите внешнее завершение TLSВ панели DNS проверьте A и AAAA, у CDN — сертификат на внешнем узле. Для прямой проверки origin указывайте точный IP и SNI, не отключая проверку HTTPS у пользователей. Не редактируйте Apache, пока не установлено, что он действительно отвечает клиенту.
- Примените исправление после копии конфигурацииСохраните копию SSL VirtualHost, укажите проверенный файл полной цепочки, проверьте apache2ctl -t: ожидается Syntax OK. При ином результате откатите файл. Затем выполните штатную перезагрузку службы (имя apache2 на Debian, httpd на RHEL).Linux · Терминал (Bash)С осторожностьюНужен sudoDebian/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.