IE 7+中的SSL证书不匹配,Firefox 3.6+中的OK

问题描述 投票:5回答:2

我们有一个网站www.name1.domain.com,我们成功创建并实施了SSL证书。然后我们添加了另一个网站www.name2.domain.com,并且在IE7和IE8中看到了一些奇怪的行为(惊喜!)。

基本上,当我们去https://www.name2.domain.com/时,IE7,8报告主机名不匹配。当我在IE中为此域添加和查看此证书时,主机名不正确,但属于较旧的主机名,即www.name1.domain.com。

Firefox没有此问题,并为第二个站点选择正确的主机名www.name2.domain.com而没有问题。

任何想法为什么IE是行为不端(除了时髦的( - :)?

apache firefox ssl internet-explorer
2个回答
7
投票

您的问题是Windows XP上的Internet Explorer(可能还有其他软件)不支持SNI。

我刚遇到同样的问题 - 基本上Firefox和Chrome都可以,并获得正确的证书,但Internet Explorer没有。然后我查了一下,在维基百科上看到了this,其中包括:

在Windows Vista或更高版本上支持TLS服务器名称指示[7] Internet Explorer 7或更高版本的浏览器。不适用于Windows XP,甚至Internet Explorer 8。

所以,你的apache / openSSL组合是SNI能够做到这一点,但Windows XP不是。

我的解决方案是我将主子域首先放在VirtualHost配置中,而辅助子域放在第二个子域中。至少对客户解释为何会出现这种情况的解释较少。我不知道它是否适合你。


2
投票

Firefox支持在同一端口上运行SSL,443(使用相同的IP)到两个虚拟主机(在Apache中),但IE7不支持。

http://www.eggheadcafe.com/software/aspnet/36069240/sni-support.aspx

====

http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts2

为什么不能使用基于名称的虚拟主机来识别不同的SSL虚拟主机?基于名称的虚拟主机是一种非常流行的识别不同虚拟主机的方法。它允许您为许多不同的站点使用相同的IP地址和相同的端口号。当人们转向使用SSL时,似乎很自然地假设可以使用相同的方法在同一台服务器上拥有许多不同的SSL虚拟主机。

要知道这是不可能的,这是一种震惊。

原因是SSL协议是一个封装HTTP协议的独立层。因此,SSL会话是一个单独的事务,它发生在HTTP会话开始之前。服务器在IP地址X和端口Y(通常为443)上接收SSL请求。由于SSL请求不包含任何Host:字段,因此服务器无法决定使用哪个SSL虚拟主机。通常,它只会使用它找到的第一个,它匹配指定的端口和IP地址。

当然,您可以使用基于名称的虚拟主机来识别许多非SSL虚拟主机(例如,全部在端口80上),然后使用单个SSL虚拟主机(在端口443上)。但是,如果这样做,您必须确保将非SSL端口号放在NameVirtualHost指令上,例如

NameVirtualHost 192.168.1.1:80其他解决方案包括:

为不同的SSL主机使用单独的IP地址。为不同的SSL主机使用不同的端口号。

© www.soinside.com 2019 - 2024. All rights reserved.