首页 文章

安全websocket(WSS)证书签名

提问于
浏览
2

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

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

问题是: how do I sign the certificate that will reside on each websocket server that is not on my domain? Can I use the certs from the main site https://www.foo.com to sign a x509 cert for the websocket server on an arbitrary domain?

我正在使用Fleck作为websocket服务器

1 回答

  • 1

    虽然这个问题似乎已经解决了(根据提出问题的时间),但我会为那些在这里磕磕绊绊的人添加一些链接 .


    • 决定您要使用哪个证书

    • Use foo.com's certificate
      如果要使用与页面相同的证书,则必须将IP地址添加到证书中(询问发行者如何实现此目的,因为这主要取决于其基础结构 .

    • Get new certificate
      就像你获得了现有的证书,但是你的websocket机器的with the IP address .

    • Generate new self-signed certificate
      如果要生成自签名证书(在所有浏览器中发出警告,并且可能在没有先手动信任它的情况下无法工作),只需use OpenSSL to generate a self-signed certificate .

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

    如果IP地址频繁变化,这非常复杂(如果不是不可能的话) . 然后我建议使用代理监听(子)域并处理https / wss . 然后,代理和websocket机器之间的连接应物理保护(如直接连接)或通过VPN .


    我希望,我解决了你的问题,我的回答很清楚 . 如果没有,请随时评论我可以改进的内容 .

相关问题