【问题标题】:IE8 window.open SSL Certificate issueIE8 window.open SSL证书问题
【发布时间】:2010-08-16 10:24:05
【问题描述】:

我有一个使用自签名证书的基于 Web 的应用程序。当您登录应用程序时,您必须接受证书。这很痛苦,但是..我们暂时可以接受,一切都很好。 当您单击帮助链接时,它使用 java 脚本 window.open 在新窗口中打开帮助。这一切都很好。 IE8 除外。
在 IE8 中,当我使用 window.open 打开帮助文件时,它再次要求用户接受 SSL 证书。就像它在一个新的安全区域或什么的。这在旧版 IE 或 Firefox 中不是问题。

有人知道解决这个问题的方法吗?有没有办法打开一个新窗口但将其保持在同一个安全会话中?

我不想要一个涉及 IE 配置的解决方案,我不想在我们的安装指南中添加 IE 配置步骤! 而且在这个阶段,我很想放一个合适的证书是不切实际的。

更新:应用程序的 url 只是 localhost:port。帮助文件只是 help.html。关于框也有同样的问题。关于.html。

【问题讨论】:

  • 你能显示示例 URL 吗?父页面在什么样的 URL 上,window.open URL 是什么样的?

标签: javascript internet-explorer-8 ssl-certificate


【解决方案1】:

这是 IE8 的预期行为。除非您将站点证书添加到永久例外列表中,否则您应该在站点打开的每个新窗口中都会收到提示。

您的选择是:

  • 永久接受您的自签名证书
  • 出具真实证书
  • 将额外的窗口整合到已经打开的窗口中,而不是产生更多的浏览器垃圾
  • 每个窗口都必须接受一次证书

【讨论】:

    【解决方案2】:

    开源 Forge 项目可能会提供帮助。它旨在帮助解决这个问题:安全地访问基于 Web 的应用程序,而无需用户处理自签名证书警告等。

    Forge 项目:

    http://github.com/digitalbazaar/forge/blob/master/README

    一篇讨论该问题以及如何使用 Forge 解决该问题的博文:

    http://blog.digitalbazaar.com/2010/07/20/javascript-tls-1/2/

    它的要点是:Forge 为您的用户提供了两种方法来避免处理证书警告。但是,它们都可能需要您进行一些工程,这可能会或可能不会涉及比您认为的价值更多的工作。

    方法 1: 您可以让您的用户通过受 SSL 保护的网站(不是本地,而是通过网络上的域)访问在 localhost 上运行的应用程序。为了实现这一点,Forge 通过 Flash 建立 SSL 隧道,它可以进行跨域请求。这方面的细节是从您必须添加到应用程序中的任何内容中抽象出来的。您的用户都将访问同一个网站,这比“localhost:12345”更方便,而且可能比他们更容易记住,然后下载一些 JavaScript。然后,该 JavaScript 将对“localhost:12345”执行 SSL 跨域请求以显示界面。这是重新设计的部分……如果您的基于 Web 的应用程序尚未使用 ajax 来更新其内容并显示其界面,那么您需要对其进行更改。这是因为所有的跨域和 SSL 魔法都是通过 JavaScript 发生的。您需要的另一部分是您的应用程序能够上传和存储它生成的自签名证书到您的用户访问的服务器。这样,当他们访问网站并下载 JavaScript 时,它可以作为受信任的证书包含在内。此方法可确保在 localhost 上运行的应用程序的安全流量,而不会出现烦人的安全警告。

    如果您还没有受 SSL 保护的网站,或者不想付费,那么方法 #2 可能更有吸引力。

    方法 2: 这种方法的安全性稍差一些,但由于应用程序在 localhost 上运行,因此不应该有很大的安全风险。这种方法实施起来也更快。在此方法中,您从 localhost 服务器加载 Forge JavaScript 以及要信任的证书。从那时起,Forge JavaScript 进行 https 调用以显示界面/与应用程序交互。这意味着仍然需要进行与 #1 中相同的 ajax 接口更改,但是,不必设置任何系统来存储自签名证书(或类似证书)。同样,缺点是要信任的证书和 Forge JavaScript 最初是通过不安全的连接加载的。但是,该连接是与 localhost 的连接,因此与通过 Internet 加载相比,它的问题要少一些。

    因此,这里涉及的工作并非零,但根据您的应用程序的复杂性或您已经编写它的方式,这可能不会那么困难。而且,一旦完成,您的用户应该会获得更流畅的体验(无需任何额外说明来接受证书)。

    【讨论】:

      猜你喜欢
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多