SSL-сертификаты Nginx / Apache / TLS

SSL сайта: На одном поддомене возникла ошибка TLS handshake

  • Обновлено
  • Чтение ≈ 3 минуты

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

На одном поддомене TLS-рукопожатие прерывается, хотя основной сайт и соседние поддомены работают. Ошибка может возникать ещё до HTTP-запроса из-за отдельного сертификата, несовместимой TLS-конфигурации, особого порта или клиентских сертификатов.

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

#Что происходит и когда применима инструкция

На одном поддомене TLS-рукопожатие прерывается, хотя основной сайт и соседние поддомены работают. Ошибка может возникать ещё до HTTP-запроса из-за отдельного сертификата, несовместимой TLS-конфигурации, особого порта или клиентских сертификатов.

#Основные причины и их признаки

Возможная причинаКак узнатьЧто делать
Отдельный виртуальный узел настроен неверноПоддомен обслуживает собственный блок HTTPS и сертификат.Сбой есть только у api.example.com, www работаетСравните конфигурации и SNI.
Сервис требует клиентский сертификатМеханизм mTLS может быть включён только для отдельного API.В логах certificate_required или handshake failureПроверьте политику клиента и сервера.
DNS направляет на другой адресНеработающий узел предлагает другой протокол/сертификат.Поддомены получают разные A/AAAA или балансировщикиПроверяйте конкретный IP и TLS-терминатор.

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

  1. Зафиксируйте, на каком этапе обрывОткройте поддомен в браузере и запишите текст ошибки. Если запрос не появляется в журнале приложения, отказ мог возникнуть при TLS ещё до HTTP. Не изменяйте PHP-код или правила rewrite до доказательства, что запрос дошёл до приложения.
  1. Проверьте DNS проблемного имениЗапросите A и AAAA поддомена. Сравните их с рабочим основным сайтом, но помните: разные IP не обязательно ошибка, если так задумано. Зафиксируйте адрес каждого сервера, на котором необходимо испытать TLS.
  2. Терминал с dig, только чтение; подставьте проблемное имя
    Linux · Терминал (Bash)Команда
    Терминал с dig, только чтение; подставьте проблемное имя.
    dig +short api.example.com A; dig +short api.example.com AAAA
  1. Получите диагностическое TLS-сообщениеВыполните openssl s_client именно с именем поддомена в -servername, включите показ цепочки и запишите Alert или verify error. Не передавайте закрытые клиентские ключи и не включайте режимы игнорирования TLS.
    Linux · Терминал (Bash)Команда
    Терминал с OpenSSL, безопасное чтение. Укажите реальный порт, если сервис осознанно размещён не на 443.
    openssl s_client -connect api.example.com:443 -servername api.example.com -showcerts -verify_return_error </dev/null
  1. Сравните TLS-узлы и сертификатЕсли соединение доходит до Nginx/Apache, сопоставьте listen, server_name, файлы сертификата и цепочку. Убедитесь, что SAN включает именно этот поддомен или подходящий wildcard. Wildcard одного уровня не защищает вложенные имена вроде a.b.example.com.
  1. Проверьте поддерживаемые протоколыНа внешней диагностической машине попробуйте TLS 1.2 и TLS 1.3, если OpenSSL их поддерживает. Различайте handshake failure, ошибку сертификата и соединение, отвергнутое по сети; это не равнозначные причины.
    Linux · Терминал (Bash)Команда
    Терминал с OpenSSL. Результат одной версии TLS не определяет всей совместимости.
    openssl s_client -connect api.example.com:443 -servername api.example.com -tls1_2 </dev/null
  1. Проверьте требование mTLSПосмотрите, не требует ли этот виртуальный узел сертификат клиента. Если API по проекту закрыт, правильно установить доверенный клиентский сертификат в приложение, а не отключать mTLS для всего домена.
  1. Исправьте подтверждённую конфигурациюПосле резервной копии скорректируйте нужный сертификат, SNI или политику TLS. Проверьте синтаксис веб-сервера и примените через штатный reload; при ошибке незамедлительно верните предыдущий рабочий файл.
  1. Проверьте все адреса и сценарииПовторите подключение к каждому A/AAAA, затем откройте нужный API-метод или страницу, проверьте коды, авторизацию и журнал. Работоспособность основной страницы другого поддомена не заменяет эту проверку.

#Проверка результата

Именно проблемный поддомен проходит TLS с нужным сертификатом и допустимым клиентом, приложение обрабатывает запрос и соседние домены продолжают работать без регрессий.

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

Если снаружи соединение обрывается, а серверный журнал пуст, исследуйте внешний CDN, сетевой балансировщик и правила безопасности. Если срабатывает mTLS, сначала проверьте клиента и доверенную цепочку, затем обращайтесь к администратору.

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

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

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