Я пытаюсь установить безопасное соединение WebSocket с сайтом, отличным от сайта, на котором выполняется мой код клиента WebSocket (т. Е. Пытаюсь подключиться к wss: //a.site.com: 15673 / ws fromhttp://another.site.com/my_page.html)
Сайт, к которому я подключаюсь, НЕ использует самозаверяющий сертификат, это сертификат, выданный органом с доверенным корнем, мой браузер отправляет запросы https для защиты сайтов с сертификатом без предупрежденийили ошибки.
Тем не менее, когда я пытаюсь установить соединение с веб-сокетом в Chrome, я получаю
WebSocket connection to 'wss://a.site.com:15673/ws' failed: WebSocket opening handshake was canceled
Выход Chrome net-internals:
301565: SSL_CONNECT_JOB
ssl/a.site.com:15673
Start Time: 2019-05-01 15:17:42.568
t=8370 [st= 0] +SOCKET_POOL_CONNECT_JOB [dt=371]
--> group_name = "ssl/a.site.com:15673"
t=8370 [st= 0] +SOCKET_POOL_CONNECT_JOB_CONNECT [dt=371]
t=8370 [st= 0] TCP_CLIENT_SOCKET_POOL_REQUESTED_SOCKET
--> host_and_port = "a.site.com:15673"
t=8370 [st= 0] +SOCKET_POOL [dt=191]
t=8378 [st= 8] SOCKET_POOL_BOUND_TO_CONNECT_JOB
--> source_dependency = 301566 (WEB_SOCKET_TRANSPORT_CONNECT_JOB)
t=8561 [st=191] SOCKET_POOL_BOUND_TO_SOCKET
--> source_dependency = 301569 (SOCKET)
t=8561 [st=191] -SOCKET_POOL
t=8741 [st=371] -SOCKET_POOL_CONNECT_JOB_CONNECT
--> net_error = -110 (ERR_SSL_CLIENT_AUTH_CERT_NEEDED)
t=8741 [st=371] -SOCKET_POOL_CONNECT_JOB
Интересно, если япосетите сайт / порт, к которому я пытаюсь подключиться через https (т. е. https://a.site.com:15673) Я получаю 404, потому что там нет службы HTTP, но после этого срабатывают последующие попытки подключиться через защищенную сетевую розетку!
Я даже могу «обойти» обходной путь, сделав фиктивный запрос AJAX в своем скрипте перед подключением, но это будет ужасно.
Этонапример, в Chrome есть какой-то кэш SSL, который после заполнения может использовать код веб-сокета, но он не может заполнить сам кэш?
Firefox не ведет себя таким образом, сначала он подключается, как ожидаетсявремя без каких-либо обходных путей.Opera работает так же, как Chrome, так что, похоже, поведение Webkit возможно?
Такое же поведение возникает, когда я просто вызываю
new WebSocket("wss://a.site.com:15673/ws", ["mqtt"])
, поэтому я не думаю, что это проблема свызывающий скрипт
Может ли кто-нибудь помочь мне с правильным способом установить безопасную веб-розетку из Chrome / Webkit в этом сценарии, не прибегая к ошибочным взломам?