安全 websocket (WSS) 证书签名

Dil*_*lon 5 .net ssl ssl-certificate x509certificate websocket

我有一个网站https://www.foo.com,在这个网站上,我使用 websocket(运行我们的软件的机器的一些随机 IP 地址)连接到其他机器。即我连接到运行的 websocketws://123.45.67:80

问题是该站点通过 HTTPS 提供服务,而我想要连接的 websocket 服务器也需要安全连接 (WSS),并且不能与常规 websocket (WS) 一起使用。

问题是:如何签署驻留在不在我的域中的每个 websocket 服务器上的证书?我可以使用来自主站点的https://www.foo.com证书为任意域上的 websocket 服务器签署 x509 证书吗?

我使用Fleck作为 websocket 服务器

bio*_*uri 5

尽管问题似乎已经解决了(基于提出问题的时间),但我会为在这里绊倒的人添加一些链接。


  1. 决定要使用哪个证书

    • 使用foo.com的证书
      如果您想使用与您的页面相同的证书,您必须将 IP 地址添加到证书中(询问发行商您如何实现这一点,因为这主要取决于他们的基础设施。

    • 获取新证书
      就像您获取现有证书一样,但使用您的 websocket 机器的 IP 地址

    • 生成新的自签名证书
      如果您想生成一个自签名证书(它会在所有浏览器中发出警告,并且如果不先手动信任它可能无法工作),只需使用 OpenSSL 生成一个自签名证书

  2. 将证书添加到 Fleck 如Fleck 的自述文件中所述,您必须使用wss://协议(带有var server = new WebSocketServer("wss://[IPAddress]:[Port]");)并将 Fleck 指向您的证书(x509,带有公共和私有密钥)server.Certificate = new X509Certificate2("path/to/cert.pfx");

如果 IP 地址频繁更改,这将非常复杂(如果不是不可能的话)。然后我建议使用代理侦听(子)域并处理 https/wss。代理和 websocket 机器之间的连接应该是物理安全的(比如直接连接)或通过 VPN。


我希望,我已经解决了您的问题并且我的回答很清楚。如果没有,请随时评论我可以改进的地方。