我有这个通过https提供的网络应用程序,现在它需要使用从另一台服务器提供的websocket服务。 Chrome,Firefox和Internet Explorer立即抱怨如果应用程序是安全的(https),则不允许连接到不安全的websocket服务(ws:// URI)。奇怪的是,Apple Safari并没有抱怨。
嗯,公平地说,我认为任何全球可信的证书都可以安装在websocket服务器端,以启用安全服务(wss:// URI)。但是,维护套接字服务器的公司声称他们必须在那里安装保护我的Web应用程序的相同证书。我在网上读到,wss不会使用自签名证书运行,但无处必须与运行调用网站的证书相同。
由于我们正在讨论与第三方共享证书密钥文件,我想仔细检查一下。如果我的安全站点在域first.com上运行,而websocket服务器在IP地址a.b.c.d上运行,那么应该在websocket服务器上安装哪种证书来启用通信?一方面,这将是一种跨站点脚本,但也许浏览器安全模型允许它,假设用户知道他们想要什么?
答案 0 :(得分:1)
我从上面了解到,浏览器连接到您的Web应用程序,然后重定向到另一台服务器。如果是这种情况,那么浏览器会抱怨从安全URL重定向到不安全的站点。前进的方式实际上取决于重定向发生的服务器的域,例如,如果您的主站点具有URL形式www.mainsite.com并且目标站点具有URL形式abc.secondsite.com或IP,第二台服务器必须已配置已颁发给IP的abc.secondsite.com的SSL证书,即所请求主机的名称必须与第二站点提供的SSL ceritficate完全匹配。
第二个站点在技术上不必与您的mainsite具有相同的证书,它只需要是由可靠来源(如Verisign等)颁发的证书。
另一方面,如果您有通配符子域证书,即证书问题对所有* .mainsite.com域有效,而第二个站点的URL表单为sub_domain.mainsite.com,则相同的证书可以是用于两台服务器。
希望这有帮助。
感谢
答案 1 :(得分:0)
由于我们正在讨论与第三方共享证书密钥文件,我 想仔细检查一下。如果我的安全站点在域运行 first.com,以及IP地址为a.b.c.d的websocket服务器,是什么类型的 应该在websocket服务器上安装证书以启用 沟通?一方面,这将是一种跨站点 脚本,但也许浏览器安全模型允许它,假设 用户知道他们想要什么?
您无法为IP地址提供证书。要使用WSS://您需要连接到域名,并拥有该域名的有效证书。因此,您需要为WebSocket服务器的域名提供SSL证书。
据我所知,它不需要与网站上的相同。您可以在此处输入:http://vtortola.github.io/ng-terminal-emulator/并执行命令websocket wss://echo.websocket.org
进行检查,您将连接到websocket.org中的WebSocket,它回应您的输入。
WebSockets不受SOP(同源策略)约束,您可以在任何地方连接,服务器负责检查HTTP请求头“Origin”并接受或拒绝连接。