我有一个通过https提供服务的web应用程序,现在它需要使用另一个服务器提供的websocket服务。Chrome、Firefox和Internet Explorer立即抱怨说,如果应用程序是安全的(https),那么它就不允许连接到不安全的websocket服务(ws:// URI)。奇怪的是,苹果Safari并不这样抱怨。
好吧,足够公平,我假设任何全局信任的证书都可以安装在websocket服务器端,以启用安全服务(wss:// URI)。然而,维护socket服务器的公司声称他们必须在那里安装与保护我的web应用程序完全相同的证书。我在网上读到wss不会使用自签名证书运行,但不知道它必须是调用网站运行时所用的同一证书。
由于我们正在讨论与第三方共享证书密钥文件,我想要仔细检查这一点。如果我的安全站点在域first.com上运行,而websocket服务器在IP地址a.b.c.d上运行,那么应该在websocket服务器上安装什么类型的证书才能启用通信?一方面,这将是一种跨站点脚本,但假设用户知道他们想要的是什么,浏览器安全模型可能允许这样做?
发布于 2014-10-20 18:06:22
据我所知,浏览器连接到您的web应用程序,然后被重定向到另一台服务器。如果是这种情况,那么浏览器将抱怨从安全URL被重定向到不安全站点。前进的方式实际上取决于发生重定向的服务器的域,例如,如果您的主站点具有URLFormSSL域,而目标站点具有URLFormSSL域或IP,则第二个服务器必须配置了已颁发给IP的abc.secondsite.com的SSL证书,即请求的主机的名称必须与辅助站点提供的SSL证书完全匹配。
从技术上讲,第二个站点不需要与您的主站点拥有相同的证书,它只需要是一个由可信来源(如Verisign等)颁发的证书。
另一方面,如果您有一个通配符子域证书,即证书发行对所有URL域都有效,并且第二个站点的*.mainsite.com形式为sub_domain.mainsite.com,则可以在两个服务器上使用相同的证书。
希望这能有所帮助。
谢谢
发布于 2014-10-20 20:36:28
由于我们讨论的是与第三方共享证书密钥文件,所以我想仔细检查一下。如果我的安全站点在域first.com上运行,而websocket服务器在IP地址a.b.c.d上运行,那么应该在websocket服务器上安装什么类型的证书才能启用通信?一方面,这将是一种跨站点脚本,但假设用户知道他们想要的是什么,浏览器安全模型可能允许这样做?
您不能为IP地址提供证书。要使用WSS://,您需要连接到一个域名,并拥有该域名的有效证书。因此,您需要为您的WebSocket服务器的域名提供SSL证书。
据我所知,它不需要与网站上的相同。您可以通过输入此处:http://vtortola.github.io/ng-terminal-emulator/并执行命令websocket wss://echo.websocket.org进行检查,您将连接到websocket.org中的一个回显您的输入的WebSocket。
WebSockets不受同源策略的限制,您可以在任何地方连接,服务器负责检查HTTP请求头Origin,并接受或拒绝连接。
https://stackoverflow.com/questions/26462729
复制相似问题