我有一个网站 https://www.foo.com
,在这个网站上,我使用 websocket 连接到其他机器(运行我们软件的机器的一些随机 IP 地址).即我连接到在 ws://123.45.67:80
问题是该站点是通过 HTTPS 提供服务的,而我想连接到的 websocket 服务器也需要安全连接 (WSS),并且不能与常规 websocket (WS) 一起使用。
问题是:我如何签署将驻留在不在我的域中的每个 websocket 服务器上的证书?我可以使用来自主站点 https://www.foo.com
的证书为任意域上的 websocket 服务器签署 x509 证书吗?
我正在使用 Fleck作为 websocket 服务器
最佳答案
虽然问题似乎已经解决了(根据问题被问到的时间),我会为偶然发现这里的人添加一些链接。
决定,你想使用哪个证书
使用 foo.com 的证书
如果您想使用与您的页面相同的证书,则必须将 IP 地址添加到证书中(询问颁发者如何实现这一点,因为这主要取决于他们的基础设施。获取新证书
就像您获得了现有证书一样,但是 with the IP address你的 websocket 机器。生成新的自签名证书
如果您想生成一个自签名证书(它会在所有浏览器中发出警告,并且如果不首先手动信任它可能无法工作),只需 use OpenSSL to generate a self-signed certificate .
将证书添加到 Fleck 如 Fleck's Readme 中所述,您必须使用 wss:// 协议(protocol)(使用
var server = new WebSocketServer("wss://[IPAddress]:[Port]");
)和使用server.Certificate = new X509Certificate2("path/to/cert.pfx");
将 Fleck 指向您的证书(x509,公钥和私钥)
如果 IP 地址频繁更改,这将非常复杂(如果不是不可能的话)。然后我建议使用代理监听(子)域并处理 https/wss。然后应通过物理方式(如直接连接)或通过 VPN 保护代理和 websocket 机器之间的连接。
我希望,我已经回答了您的问题并且我的回答已经足够清楚了。如果没有,请随时评论我可以改进的地方。
关于.net - 安全网络套接字 (WSS) 证书签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205412/