我有一个网站 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 回答
虽然这个问题似乎已经解决了(根据提出问题的时间),但我会为那些在这里磕磕绊绊的人添加一些链接 .
决定您要使用哪个证书
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 .
我希望,我解决了你的问题,我的回答很清楚 . 如果没有,请随时评论我可以改进的内容 .