#Что означает сообщение
Неверный сертификат у домена
Старые клиенты не поддерживают SNI. Проверьте server_name, default_server и порядок виртуальных хостов.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Не тот server_name | В nginx указан другой server_name либо блок не участвует в обработке нужного IP и порта. | Проверьте активный виртуальный хост nginx и SNI, исправьте имя в конкретном блоке и запустите nginx -t. |
| default_server | Без SNI клиент получает настройки сервера по умолчанию; они могут не соответствовать ожидаемому домену. | Проверьте явно назначенный сервер по умолчанию и его нейтральный сертификат без изменения других сайтов. |
| Старый клиент | Отдельно проверьте фактор «Старый клиент» в момент, когда возникает описанная неисправность; сравните с работой исправного устройства или настройки. | Если проверка подтверждает «Старый клиент», исправьте только относящийся к нему элемент, сохранив прежнее значение и возможность возврата. |
| Нет сертификата | Сверьте точное имя узла, срок сертификата или действующую подпись; проверьте их на стороне реального сервера, а не только в локальном файле. | Исправляйте цепочку, имя или ключ у владельца сервиса; не заменяйте устранение причины отключением проверки защищённого соединения. |
#Пошаговое решение
- Проверьте исходные условияВ браузере откройте именно домен, на котором выводится чужой сертификат, и запишите имя, указанное в сертификате. Сравните результат с
openssl s_client -connect ИМЯ:443 -servername ИМЯ -showcerts: при SNI-соединении сервер должен выбирать сертификат для указанного домена. - Проверьте server_nameАдминистратор Nginx или Apache проверяет все виртуальные хосты, слушающие нужный IP:443, и точное имя в
server_name/ServerNameиServerAlias. Отдельно проверьте сайт по IPv4 и IPv6: неправильный сертификат может приходить с одного из адресов или промежуточного балансировщика. - Проверьте другую возможную причинуНайдите и исправьте конфигурацию соответствующего HTTPS-хоста с сертификатом, покрывающим нужные имена. Для запросов без SNI сервер может показывать сертификат хоста по умолчанию — это ожидаемое поведение, поэтому не пытайтесь применить одно имя ко всем чужим доменам.
- Проверьте итогСоздайте копию изменяемого конфига, проверьте синтаксис (
nginx -tлибоapachectl configtest) и только затем примените изменения штатным способом. Повторите проверку с-servername, в браузере и, при наличии CDN, напрямую к исходному серверу, убедившись, что ответы не разнятся.
#На что обратить внимание
Не меняйте default_server для исправления всего сразу: это изменит поведение неизвестных имён. Старые клиенты без SNI могут получать сертификат сайта по умолчанию; это ограничение нужно учитывать отдельно.