【问题标题】:Disable WebSocket certificate validation禁用 WebSocket 证书验证
【发布时间】:2016-07-07 09:46:34
【问题描述】:

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

我在这个问题Websocket SSL connection 中找到了rejectUnauthorized 参数,但这不再起作用。其实如果你去Mozilla's documentation,只有两个参数:URL和协议版本。

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

所以,我需要在创建 WebSocket 期间禁用证书验证。我该怎么做?

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

编辑:我需要使用自签名证书。 Let's Encrypt 是毫无疑问的,因为它需要一个子域,然后我需要管理成百上千的子域。该应用程序分为三个部分,将部署到每个客户(数百个):

  • 管理控制台:使用子域和 LE 证书。
  • WebSocket 服务器 1:需要仅使用 IP 的加密连接
  • WebSocket 服务器 2:需要仅使用 IP 的加密连接

【问题讨论】:

  • 您是指在您的机器上一次性继续您的工作,还是为网站的任何访问者提供一种通用方式?
  • @JamesThorpe 一般方式。客户端会下载一个js,在后台连接一些Python WebSocket服务器

标签: javascript websocket


【解决方案1】:

我可能会迟到,但由于我遇到了同样的问题并且没有真正的答案,我转而阅读了实现documentation

方法

connect(requestUrl, requestedProtocols, [[[origin], headers], requestOptions])

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

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

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

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

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

var client = new WebSocket();
client.connect(WSSrvUrl, null, null, null, {rejectUnauthorized: false});
//or depending on the implementation you're using (this applies to Nodejs and web browser implementation:
var client = new WebSocket(WSSrvUrl, null, null, null, {rejectUnauthorized: false});

就是这样。

可持续发展目标

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 2016-04-23
    • 2019-06-28
    • 1970-01-01
    相关资源
    最近更新 更多