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



我有一个通过https提供服务的web应用程序,现在它需要使用另一台服务器提供的websocket服务。Chrome、Firefox和Internet Explorer立即抱怨说,如果应用程序是安全的(https),那么就不允许连接到不安全的websocket服务(ws://URI)。奇怪的是,苹果Safari并没有这么抱怨

公平地说,我假设任何全局可信的证书都可以安装在websocket服务器端,以启用安全服务(wss://URI)。然而,维护套接字服务器的公司声称,他们必须在那里安装保护我的web应用程序的相同证书。我在网上读到,WS不会使用自签名证书运行,但它必须是调用网站运行的同一证书。

由于我们正在讨论与第三方共享证书密钥文件,我想仔细检查一下。如果我的安全站点运行在domain first.com,并且websocket服务器的IP地址为a.b.c.d,那么应该在websocket上安装什么类型的证书来启用通信?一方面,这将是一种跨站点脚本,但也许浏览器安全模型允许这样做,假设用户知道他们想要什么?

由于我们正在讨论与第三方共享证书密钥文件,我我想仔细检查一下。如果我的安全站点在域中运行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,该WebSocket会响应您的输入。

WebSockets不受SOP(同源策略)的约束,您可以在任何地方连接,服务器负责检查HTTP请求头"Origin"并接受或拒绝连接。

我从上面了解到,浏览器连接到您的web应用程序,然后重定向到另一台服务器。如果是这样的话,浏览器就会抱怨从安全的URL重定向到不安全的网站。前进的道路实际上取决于重定向发生的服务器的域,例如,如果您的主站点的URL格式为www.mainsite.com,而目标站点的URL形式为abc.secondsite.com或IP,第二服务器必须已经配置了已经颁发给IP的abc.secondsite.com的SSL证书,即所请求的主机的名称必须与第二站点提供的SSL证书完全匹配。

从技术上讲,第二个站点不必拥有与主站点相同的证书,它只需要是由可信来源(如Verisign等)颁发的证书。

另一方面,如果您有通配符子域证书,即颁发的证书对所有*.mainsite.com域都有效,并且第二个站点的URL形式为sub_domain.mainsite.com,则两台服务器上都可以使用相同的证书。

希望这能有所帮助。

感谢

相关内容

  • 没有找到相关文章

最新更新