1

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

您已要求 Firefox 安全连接到 ***,但我们无法确认您的连接是否安全

这是否可以通过例如向有问题的 url 发出请求并处理错误代码/它可能返回的任何其他相关信息来检测?我找不到任何规范来说明浏览器是如何处理的。

编辑:

我不介意登陆页面本身发生的错误,用户很清楚。然而,一些请求在后台失败(从不同的子域中提取 css/js/其他静态内容)但你不知道它们会失败,除非你去 firebug 中的网络面板并在新选项卡中打开它并查看错误.. .

目的不是为了规避这一点,而是为了检测问题并说出类似“嘿,这些请求失败,您可以通过直接访问这些 url 来添加安全异常:[bunch of links]”

4

2 回答 2

3

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

如果用户不进行这些检查,因此将自己置于可能发生 MITM 攻击的位置,您不一定能够知道它。活跃的 MITM 攻击者可以回答执行您用来尝试检查用户是否正确执行任务的任务,但合法用户甚至可能不知道它。这与想要使用从to的重定向http://https://非常相似:只要没有活动的 MITM 攻击降级连接,它就可以工作。

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

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

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

于 2012-05-11T00:29:24.687 回答
0

不。

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

于 2012-05-10T23:52:27.377 回答