连接到运行多个启用SSL的Web应用程序的服务器时,Android Websocket客户端SSL错误

时间:2018-11-26 21:36:46

标签: android django nginx websocket daphne

我正在研究通过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是我们的另一个网址。它指向与domain.com在同一服务器上运行的同一Web应用程序的单独实例,这是我当前正在使用的应用程序。

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

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

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

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

我发现this issue在我用于网络套接字的库中打开。但是我不确定100%是否与我的问题有关,但可能与之有关。特别是有人指出:

  

除非已将其配置为网站上的默认服务器,否则无法连接到已启用WebSocket的服务器域。

我假设只能将一个站点设为默认站点,并且otherdomain.com可能已设置为默认站点,因为它是首先完成的。老实说,这一切都让我感到头疼,我不确定这是不是真的。

0 个答案:

没有答案