禁用WebSocket证书验证

yzT*_*yzT 6 javascript websocket

我需要禁用WebSocket的证书验证,因为我使用的是自签名证书.

我在这个问题上找到的WebSocket SSL连接rejectUnauthorized参数,但不再工作.事实上,如果你去Mozilla的文档,只有两个参数:URL和协议版本.

在另一个问题或网站(不记得确切),我发现如果我先去https://server_ip,我会得到无效证书的提示,询问我是否要继续.然后我可以连接使用wss://server_ip,它会工作,它确实可以,但这不适用于我的情况.

因此,我需要在创建WebSocket期间禁用证书验证.我怎样才能做到这一点?

我用于测试的代码是https://www.websocket.org/echo.html上的代码.我替换了websocket = new WebSocket(wsUri);with websocket = new WebSocket(wsUri, {rejectUnauthorized: false});(在测试期间,还添加protocolVersion: 8了链接问题中的参数)

编辑:我需要使用自签名证书.让我们的加密是不可能的,因为它需要一个子域,然后我需要管理数百到数千个.该应用程序分为三个部分,将部署到每个客户(数百个):

  • 管理控制台:使用子域和LE证书.
  • WebSocket Server 1:只需要使用IP加密连接
  • WebSocket Server 2:只需要使用IP加密连接

小智 3

我可能会晚到这里,但由于我遇到了同样的问题并且没有真正的答案,所以我转向阅读实现文档

方法

connect(requestUrl, requestedProtocols, [[[origin], headers], requestOptions])
Run Code Online (Sandbox Code Playgroud)

将建立与给定requestUrl 的连接。requestProtocols表示客户端支持的多个子协议的列表。远程服务器将选择它支持的最佳子协议,并在建立连接时将其发回。origin 是一个可选字段,可在用户代理场景中用于标识包含导致请求连接的任何脚本内容的页面。requestUrl应该是标准的 websocket url。

headers应该为 null 或指定随请求一起发送的附加任意 HTTP 请求标头的对象。这可用于传递访问令牌等内容,以便服务器可以在决定接受和打开完整的 WebSocket 连接之前验证身份验证/授权。

requestOptions应该为 null 或指定要传递给 http.request 或 https.request 的其他配置选项的对象。这可用于传递自定义代理以启用从 HTTP 或 HTTPS 代理服务器后面使用 WebSocketClient。

如果要传递 headers 则必须指定origin ,如果要传递requestOptions则必须同时指定 origin 和 headers 。origin 和 headers 参数可以作为 null 传递。

因此,正如文档所述,除非您对这些参数中的任何一个进行了特定配置,否则您应该传递 null。这就解决了迷宫。结果是:

connect(requestUrl, requestedProtocols, [[[origin], headers], requestOptions])
Run Code Online (Sandbox Code Playgroud)

就是这样。

可持续发展目标