1

我正在研究通过 websocket 连接到服务器的 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它指向在与我当前正在处理的应用程序相同的服务器上运行的同一 Web 应用程序的单独实例。

我的代码正在记录它正在连接的 URL,我可以看到它正确引用domain.com

connecting to: wss://domain.com?session_key=TheCorrectSessionKey

如前所述otherdomain.com,是同一 Web 应用程序的另一个实例。该实例之前已启用 HTTPS,并且该实例的一切正常。我现在使用的相同客户端代码能够成功连接到此实例。

同一个 Web 应用程序有一个前端页面,它也通过 wss:// 连接到 websocket。这在 Chrome 和 Firefox 浏览器中都可以正常工作domain.com,据我所知,唯一有问题的客户端是 Android 客户端,它只是domain.com应用程序的变体有问题,otherdomain.com似乎工作正常。

我发现这个问题在我用于 websockets 的库中打开。但我不是 100% 确定我的问题是否与此有关,但可能是。特别是有人说:

无法连接到启用 WebSocket 的服务器域,除非它也被配置为网站上的默认服务器。

我假设只有一个站点可以是默认的,并且可能otherdomain.com因为它首先完成而被设置为默认值。虽然老实说,这一切都让我有点过头了,我不确定这是否是相关的。

4

0 回答 0