#Что происходит и как отличить проблему
При размещении нескольких сайтов на одном IP сервер выбирает сертификат по имени SNI из TLS-запроса. Если нужный виртуальный узел не настроен, попал не в тот блок server или запрос проходит через другой прокси, браузер получает сертификат соседнего сайта. Проверять необходимо конкретный домен и точку завершения TLS.
#Возможные причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Нет совпадающего виртуального узлаserver_name нужного домена отсутствует либо адрес прослушивания неверен. | Сервер отдаёт сертификат default_server. | Проверить настройки узла и имени SNI. |
| TLS завершается в прокси или CDNНа исходном сервере всё верно, извне приходит чужой сертификат. | Проблема возникает только при внешнем доступе. | Проверить настройки промежуточного узла. |
#Пошаговая проверка и устранение
- Зафиксируйте чужой сертификат и адрес подключенияОткройте https://site.example.com (подставьте свой домен) и сохраните точную формулировку предупреждения, не обходя его. Если DNS включает несколько A/AAAA адресов, ошибка может возникать не на каждом узле. Посмотрите в кабинете DNS, куда указывает имя, и сохраните текущие значения.
- Сравните выдачу с правильным SNIНа Linux/macOS с OpenSSL откройте «Терминал» и выполните echo | openssl s_client -connect site.example.com:443 -servername site.example.com -showcerts. Замените оба имени на проверяемое, права администратора не нужны. -servername передаёт имя для выбора сайта, -connect задаёт сервер и порт. По первому сертификату и SAN проверьте, соответствует ли он домену. Если OpenSSL не установлен, используйте просмотр сертификата браузером или панель хостинга.
- Проверьте конфигурацию нужного сайтаЕсли вы администратор nginx, сохраните конфигурационные файлы и откройте только предназначенный для этого сайта server-блок с listen 443 ssl, server_name и директивами ssl_certificate/ssl_certificate_key. Не копируйте сертификат соседнего сайта и не показывайте приватный ключ. Сверьте IPv4 и IPv6 слушающие адреса, а также default_server и подключённые конфигурации.
- Проверьте изменения до примененияПосле точечного исправления привязки сертификата выполните на Linux-сервере sudo nginx -t. Команда требует прав администратора и только проверяет конфигурацию; при ошибке исправьте её по тексту сообщения. Если тест успешен, через сервисный менеджер выполните согласованное обновление конфигурации, не останавливая сайт надолго. Если Nginx не управляет внешним TLS, настройку делайте в панели CDN/балансировщика.
- Проверьте разные адреса и откатСнова проверьте HTTPS-домен через браузер и OpenSSL из внешней сети. Если у DNS несколько A/AAAA, убедитесь, что каждый обслуживающий узел имеет нужный сертификат. Проверьте соседние сайты на том же IP. Если они сломались, верните сохранённые server-блоки и выполните nginx -t перед повторным применением.
- Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
#Проверка результата и дальнейшие действия
Успех — правильный сертификат выбирается при указании целевого имени SNI, все сайты на общем IP продолжают работать и браузер не предупреждает о несовпадении имени. Если при обращении по голому IP сертификат другой, это не обязательно ошибка SNI.