带有SNI的Android nv-websocket-client

时间:2017-04-22 18:38:45

标签: android ssl websocket sni

我正在使用android nv-websocket-client库(2.0和1.31版本),我正在尝试打开wss:连接;但是,连接失败并显示503 Service not available错误消息。

经过调查,我发现HAProxy要求客户端使用SNI扩展,否则无论Host:标头(我使用HAProxy作为负载均衡器)都会返回此类错误。

在进一步调查(使用tcpdump / wireshark)后,我发现客户端没有发送SNI,返回了错误的证书(针对不同的域),但客户端继续使用TLS连接并实际发送HTTP请求(如如果没有进行证书检查?)。

我的代码基本上是:

ws = new WebSocketFactory().createSocket(wsurl);
ws.addHeader("Authorization", "Bearer " + Config.getToken());
ws.addListener(this);
ws.connectAsynchronously();

我找不到设置SSLSocketFactory的简便方法,但在我看来nv-websocket-client中的代码只使用SSLSocketFactory.getDefault(),这应该是正确的? SSLCertificateSocketFactory似乎已被弃用,赞成采用这种方法。

我是否遗漏了一些关于SSL设置的关键部分,这是Android和Android的错误还是这个以及Android'功能'?

0 个答案:

没有答案