安全的WebSocket(WSS)证书签名

8
我有一个网站 https://www.foo.com,在这个网站上我通过websocket与其他机器连接(运行我们软件的一台随机IP地址的机器)。即,我连接到运行在 ws://123.45.67:80 上的websocket。
问题是,此网站通过HTTPS提供服务,我想连接的websocket服务器也需要安全连接(WSS),并且不能使用常规的websocket(WS)。
问题是:我应该如何为不在我的域上的每个websocket服务器签署证书? 我能否使用主站点 https://www.foo.com 的证书来签署任意域上websocket服务器的x509证书? 我正在使用Fleck作为websocket服务器。
1个回答

8
尽管该问题似乎已经得到解决(根据问题提出的时间),但我会为那些遇到此问题的人添加一些链接。
  1. 确定您要使用哪个证书

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

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

    • 生成新的自签名证书
      如果您想生成自签名证书(在所有浏览器中发出警告并且可能需要手动信任才能正常工作),只需使用OpenSSL生成自签名证书

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

如果IP地址经常更改,则这非常复杂(如果不是不可能)。然后我建议使用代理监听(子)域,并处理https/wss。代理与websocket机器之间的连接应通过物理方式(例如直接连接)或通过VPN进行保护。


我希望我回答了您的问题,我的回答足够清晰易懂。如果没有,请随时评论我可以改进什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接