带SNI的Android nv websocket客户端

带SNI的Android nv websocket客户端,android,ssl,websocket,sni,Android,Ssl,Websocket,Sni,我正在使用android库(2.0和1.31版本),我正在尝试打开一个wss:连接;但是,连接失败,出现503服务不可用错误消息 经过调查,我发现HAProxy要求客户机使用SNI扩展,否则无论主机:头如何,都会返回此类错误(我将HAProxy用作负载平衡器) 在进一步调查(使用tcpdump/wireshark)后,我发现客户端没有发送SNI,返回了错误的证书(针对不同的域),但客户端继续TLS连接并实际发送HTTP请求(好像没有执行证书检查?) 我的代码基本上是: ws = new WebS

我正在使用android库(2.0和1.31版本),我正在尝试打开一个
wss:
连接;但是,连接失败,出现
503服务不可用
错误消息

经过调查,我发现HAProxy要求客户机使用SNI扩展,否则无论
主机:
头如何,都会返回此类错误(我将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的bug还是和Android的“功能”