安全websocket(WSS)证书签名

时间:2015-01-29 01:11:37

标签: .net ssl websocket ssl-certificate x509certificate

我有一个网站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 个答案:

答案 0 :(得分:2)

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

  1. 决定您要使用的证书

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

    • 获取新证书
      就像你获得现有证书一样,但是你的websocket机器with the IP address

    • 生成新的自签名证书
      如果您想生成一个自签名证书(在所有浏览器中发出警告,并且可能在没有先手动信任它的情况下无效),只需use OpenSSL to generate a self-signed certificate

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

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

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

相关问题