当访问受 SSL 保护的网站时,IE8 会抱怨证书名称与网站地址不匹配,但不提供有关证书或其正在寻找的名称的信息。
使用 IE9(或“IE8 模式”下的 IE9)、Firefox、Chrome 和 Safari 访问同一网站均没有问题,并且证书与地址匹配。证书跳棋表明一切都已正确安装和配置。
有人知道是什么原因造成的吗?这是 IE8 中已知问题还是错误?我一直在 Google 上搜索类似的问题,但由于不确定到底发生了什么,我不知道该搜索什么。
我的问题类似于这问题。但是,我的服务器正在运行 Apache2。
编辑:为什么投反对票?我描述得不够充分吗?出于隐私考虑,我不能透露该网站。我的服务器运行 Fedora,肯定是为 SNI 配置的。然而,基于这文章和它的测试站点,我已经确认有问题的浏览器(运行 Windows XP SP3 的 IE8.0.6001)在协商 SSL 连接时明确不会发送服务器名称,因此 SNI 无济于事。
答案1
SSL 证书来自哪个供应商?我假设它可能来自一个不太知名的供应商,该供应商没有在 IE8 中捆绑受信任的根证书,或者装有 IE8 的机器没有最新的根证书更新。
不过说实话,这只是猜测。您提供的信息还不足以给出明确的答案。
编辑:你说你已经“配置了 SNI”,但没有提到这个特定的网站是否用途SNI。如果你是,那么Windows XP 上没有任何版本的 IE 都支持 SNI。如果您想让 XP 上的 IE 正常工作,则必须为每个站点使用单独的 IP,并切断 SNI。
答案2
答案3
该问题是由于 IE8 不支持信噪比。我在 Apache 中配置了两个站点,每个站点都有自己的域和 SSL 证书。由于缺少 SNI,访问第二个站点时,Apache 无法解析名称,因此默认访问第一个站点,并将站点 A 的 SSL 证书提供给站点 B。
我解决了这个问题,使用负载平衡器将 SSL 请求从 siteB 重定向到一个唯一端口,然后在 Apache 站点配置中使用该端口来识别 siteB SSL 请求。
答案4
在 Vista 和 IE9 (9.0.8112.16421) 中,我遇到了同样的问题:Apache 2.2 带有 SNI 和两个子域。调用第二个域时https://sub2.example.orgIE9 总是抱怨,因为 IE9 加载的证书是 www.example.org 而不是 sub2.example.org。
Apache 配置正确(Firefox、Google Chrome 或 Safari 没有问题)。我启用和禁用了 Apache 配置“SSLProtocol all -SSLv2 -SSLv3”,但这并没有改变任何东西。
解决方案:进入 IE9 附加功能菜单,Internet 选项/高级/安全,然后禁用“使用 SSL 2.0”。单击“应用”。
编辑:幸运的是,IE9 的默认设置中 SSL 2.0 是禁用的。