检查客户端是否已接受安全性异常

时间:2012-05-10 23:48:33

标签: javascript jquery ssl https certificate

我们有一些内部测试/开发的暂存环境,它们不使用“真正的”SSL证书。老实说,我对细节有点模糊,但最重要的是当访问这些环境中的子域时,浏览器会提示你按照的方式添加安全例外“你已经要求Firefox安全地连接到例子.com但我们无法确认您的连接是否安全“

You have asked Firefox to connect securely to *** but we can't confirm that your connection is secure

可以检测到这种情况,例如通过向相关网址发出请求并处理错误代码/可能会返回的任何其他相关信息?我找不到任何规范来说明浏览器是如何处理的。

编辑:

我不介意登陆页面本身发生的错误,对用户来说非常清楚。但是有些请求在后台失败了(从不同的子域中提取css / js /其他静态内容)但除非你在firebug中使用net面板并在新选项卡中打开它并看到错误,否则你不知道它们会这样做。

目的不是为了规避这个问题,而是为了检测问题并说出像“嘿,这些请求失败,您可以通过直接访问这些URL来添加安全例外:[一串链接]”< / em>的

2 个答案:

答案 0 :(得分:3)

检查证书的有效性完全由客户负责。只有它可以知道它必须使用HTTPS,并且它必须使用它来对付对该主机有效的证书。

如果用户没有进行这些检查并因此将自己置于可能发生MITM攻击的位置,则您无需了解它。活跃的MITM攻击者可以回答执行您用来尝试检查用户是否正确操作的任务,但合法用户可能甚至不了解它。这与想要use redirections from http:// to https://非常相似:只要没有活动的MITM攻击降级连接,它就会起作用。

(有一个例外,为了确保客户端看到了与您相同的握手:使用客户端证书时。在这种情况下,您至少应该知道使用证书进行身份验证的客户端会看到你的服务器证书而不是MITM证书,因为握手结束时签名。但这并不是你想要的。)

JavaScript机制通常不会让您自己检查证书。话虽如此,XHR对不受信任的网站(带有此类警告)的请求将以某种方式失败(通常通过例外):这可能是一种检测除了登录页面之外的其他页面是否可以被后台请求访问的方法(尽管您肯定会遇到有关同源政策的问题。)

如果您部署了测试证书颁发机构(CA),那么您可以处于更好的位置,而不是使用自签名证书进行测试/开发。有许多工具可以帮助您完成此任务(使用哪一个将取决于您需要的证书数量)。然后,您必须将自己的CA证书导入这些浏览器(或其他客户端),但整体测试将更加真实。

答案 1 :(得分:0)

没有。

接受(或拒绝)仅修改客户端浏览器中的行为(每个浏览器以不同的方式)。它对服务器没有任何确认,并且页面尚未加载,因此,没有机会捕获该事件。