同一个Apache服务器上的多个SSL网站

我仍然有问题试图获得多个有效的SSL证书在同一个Apache-Ubuntu服务器上的多个网站域的工作。 客户端浏览器需要成功validationWinXP,Vista和Win 7中的Internet Explorer的SSL证书,所有操作系统上的FF以及Mac OSX上的Safari。

以前我曾经试过这个问题,但是因为我没有很好地expression我的问题,所以我得到了很好的答案,这并没有帮助我实现我的最终目标。

例如,我尝试使用NameBasedVirtual托pipe和SNI (q2)使多个SSL在单个IP和端口 (q1)上工作。

但问题是,它不适用于Windows XP上的Internet Explorer 7等一些较旧的浏览器(在Windows Vista上的IE7中正常工作)。

那么我尝试了一些我认为叫做IP别名的东西。 我购买了一个新的IP地址2.2.2.2。 现在我有两个:1.1.1.1和2.2.2.2。 我发出了下面的shell命令来将2.2.2.2添加到我的服务器上:

john@server> ifconfig eth0:1 2.2.2.2 netmask 255.255.255.0 john@server> route add -host 2.2.2.2 dev eth0:1 

我确保在/ etc / hosts文件中存在以下两行

 1.1.1.1 john1 2.2.2.2 john2 

然后,我完全按照q1所示设置我的虚拟主机文件。 我重新启动了Apache,但是我的所有网站都通过了1.1.1.1 IP而不是2.2.2.2 IP。 因此,Win XP上的IE7抛出了“证书不可信”的错误。 当我将<VirtualHost *:443>中的任何一个更改为<VirtualHost 2.2.2.2:443>时,所有客户端浏览器都抱怨网站的“证书不可信”(可能与使用1.1.1.1的站点有关IP地址而不是2.2.2.2 IP地址)。

所以我回到了我原来的问题。 我可以在哪里find关于如何在同一个apache-ubuntu服务器上设置多个SSL的分步指南? 任何人都可以帮我解决这个问题?

谢谢

你在这里正确的轨道上。 基本上,您必须为每个您计划托pipe的SSL网站提供一个单独的IP地址。 其原因是SSL握手首先执行,并且不知道您尝试连接的域名。 只有在执行SSL握手之后,HTTP请求才会被传送到服务器。

我的build议是去一个更基本的设置和启用一个SSL虚拟主机每个域与相应的IP地址。

好吧,我想出了我的问题。 我需要去区域文件/ DNSpipe理器,并指出每个域到他们各自的AloggingIP地址(例如,site2.com到2.2.2.2)。 之后,VirtualHost文件能够识别

 <VirtualHost 2.2.2.2:80> and <VirtualHost 2.2.2.2:443> 

这样,Apache就可以开始将每个域名关联到它们各自的IP地址。