самозаверяющий сертификат SANs игнорируется в соединении wss

#ssl #websocket

#ssl #websocket

Вопрос:

Доступ к веб-службе можно получить как через IP, так и через DNS.
Самозаверяющий сертификат, содержащий DNS в качестве общего имени, а также DNS и IP в качестве альтернативного имени субъекта, создается с помощью следующей команды

 openssl req   -x509   -nodes   -subj "/O=www.example.com/CN=${domain_name}"   -addext "subjectAltName=DNS:${domain_name},IP:${ip_addr}"   -newkey rsa:4096   -keyout /path/to/key.pem   -out /path/to/cert.pem   -addext "extendedKeyUsage = serverAuth"   -days 365  

Открытие веб — страницы по IP-адресу и принятие предупреждения браузера работает.
Страница инициирует новое подключение WSS к DNS, но не удается из-за недействительного сертификата.

Как я должен настроить свой сертификат, чтобы браузеры доверяли как IP, так и доменному имени при запуске подключения wss

Комментарии:

1. Вы проверили свой сертификат, чтобы убедиться, что SANS действительно были добавлены? openssl x509 -in /path/to/cert.pem -noout -text

2. @AndrewHenle да, оба присутствуют

Ответ №1:

Добавление исключения безопасности при принятии предупреждения безопасности о ненадежном сертификате выполняется не для сертификата, а для комбинации сертификата, домена и порта из URL-адреса. Поскольку доступ к HTML осуществляется по IP-адресу, а к websocket-по имени хоста, исключение, добавленное для первого, не будет охватывать второе.

Лучший способ-не принимать предупреждения о безопасности в первую очередь, а вместо этого добавить сертификат как надежный в браузере. В этом случае сертификат будет надежным для всех IP-адресов и доменов, указанных в сертификате.