Client Websocket SSL - 连接到特定的IP地址

时间:2018-02-27 21:35:13

标签: javascript html5 ssl networking websocket

假设有一个名为https://example.com的网站。域上的DNS查找返回以下A记录:

1.1.1.1 A example.com
1.1.1.2 A example.com
1.1.1.3 A example.com
1.1.1.4 A example.com

这些地址中的每一个都具有example.com的SSL证书,并且在端口443上运行websocket服务器。

客户端可以使用

之类的东西连接到其中一台服务器
var wss = new WebSocket("wss://example.com");

这会将客户端连接到基于DNS Round Robin的服务器:客户端无法控制她连接的服务器。

我的问题如下:

客户端如何在没有证书问题的情况下连接到特定地址?

例如,如果客户端知道她希望连接到1.1.1.4并尝试连接

var wss = new WebSocket("wss://1.1.1.4");

她将遇到ssl错误,因为服务器无法在其证书中将单个地址作为替代名称。

在建立连接时是否可以指定主机名和单个地址;

之类的东西
var wss = new WebSocket("wss://example.com?ip=1.1.1.4");

我相信您可以使用CURL执行此操作,例如curl https:// DOMAIN.TLD --resolve 'DOMAIN.TLD:443:IP_ADDRESS'

1 个答案:

答案 0 :(得分:2)

要避免证书问题,请申请域名而不是IP。我建议这个:

1.1.1.1 A example.com
1.1.1.2 A example.com
1.1.1.3 A example.com
1.1.1.4 A example.com
1.1.1.1 A a.example.com
1.1.1.2 A b.example.com
1.1.1.3 A c.example.com
1.1.1.4 A d.example.com

和所有5个域的单个SAN证书(example.com + [a-d] .example.com) 您可以单独测试[a-d] .example.com中的任何一个,或者example.com,所有人都会使用相同的证书进行测试,我认为没有任何问题。