javascript - 客户端 Websocket SSL——连接到特定的 IP 地址

标签 javascript html 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 循环的服务器:客户端无法控制她连接到的服务器。

我的问题如下:

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

例如,如果客户端知道她希望连接到 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'

之类的东西来做到这一点

最佳答案

为避免证书问题,请请求域名而不是 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 中的任何一个,所有这些都将使用相同的证书进行响应,我认为没有问题。

关于javascript - 客户端 Websocket SSL——连接到特定的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49018314/

相关文章:

javascript - 如何找出什么事件导致在 FireFox 中执行 javascript 函数?

jquery - 限制用户在具有数据属性的插槽中重复颜色

javascript - 如果 overflow hidden 的父元素为 "cut",则删除子元素

oracle - 如何加密 FireDAC 连接以在 Delphi 中使用 TLS/SSL?

SSL 客户端验证失败

Javascript:在特定时间段后再次调用函数

javascript - 从尚未注册到 DOM 的 jquery 对象中删除元素

ssl - 无需证书验证即可进行 httpS 连接的 kotlin 库(如 curl --insecure)

javascript - 如何在 JavaScript 中执行不区分大小写的字符串排序数组?

javascript - jQuery 切换背景图片