为我的https Web应用程序设置安全的Web套接字(wss)服务

时间:2014-10-20 09:48:11

标签: security websocket

我有这个通过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服务器上安装哪种证书来启用通信?一方面,这将是一种跨站点脚本,但也许浏览器安全模型允许它,假设用户知道他们想要什么?

2 个答案:

答案 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”并接受或拒绝连接。