Я работаю над реализацией клиента Android, который подключается через веб-сокет к серверу.Я только что включил HTTPS на экземпляре сервера и теперь получаю эту проблему:
W/System.err: com.neovisionaries.ws.client.HostnameUnverifiedException: The certificate of the peer (CN=otherdomain.com) does not match the expected hostname (domain.com)
at com.neovisionaries.ws.client.SocketConnector.verifyHostname(SocketConnector.java:171)
at com.neovisionaries.ws.client.SocketConnector.doConnect(SocketConnector.java:126)
at com.neovisionaries.ws.client.SocketConnector.connect(SocketConnector.java:83)
at com.neovisionaries.ws.client.WebSocket.connect(WebSocket.java:2152)
at com.neovisionaries.ws.client.ConnectThread.runMain(ConnectThread.java:32)
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
Кажется, что клиент websocket находит несоответствующие имена хостов сервера.
Некоторая другая связанная информация:
otherdomain.com
- это другой из наших URL.Он указывает на отдельный экземпляр того же веб-приложения, работающего на том же сервере, что и domain.com
, - приложение, над которым я сейчас работаю.
Мой код регистрирует URL-адрес, к которому он подключается, и я вижу, что он правильно ссылается domain.com
:
connecting to: wss://domain.com?session_key=TheCorrectSessionKey
Как уже отмечалось, otherdomain.com
является еще одним примером того жевеб приложение.В этом экземпляре уже был включен HTTPS, и с этим экземпляром все работает правильно.Тот же код клиента, который я сейчас использую, может успешно подключиться к этому экземпляру.
В этом же веб-приложении есть страница интерфейса, которая также подключается к веб-сокету через wss: //.Это работает правильно как в браузерах Chrome, так и в Firefox для domain.com
, насколько я могу судить, единственным клиентом, имеющим проблемы, является клиент Android, и это только вариант приложения domain.com
, имеющий проблемы, otherdomain.com
.Кажется, работает нормально.
Я обнаружил эту проблему , открытую в библиотеке, которую я использую для веб-сокетов.Но я не уверен на 100%, если моя проблема связана с этим, но это может быть.В частности, кто-то заявляет:
Невозможно подключиться к домену сервера с поддержкой WebSocket, если он также не настроен в качестве сервера по умолчанию на веб-сайте.
IПредположим, что только один сайт может быть по умолчанию, и, возможно, otherdomain.com
был установлен по умолчанию, поскольку он был завершен первым.Это все немного над моей головой, хотя, если честно, я не уверен, является ли это относительным или нет.