我仍然无法尝试让多个有效的 SSL 证书在同一 Apache-Ubuntu 服务器上为多个网站域工作。客户端浏览器需要成功验证 WinXP、Vista 和 Win 7 中的 Internet Explorer、所有操作系统上的 FF 以及 Mac OSX 上的 Safari 的 SSL 证书。
我之前尝试问过这个问题几次,但是因为我没有很好地表达我的问题,所以我得到的答案并没有帮助我实现最终目标。
例如,我试图得到多个 SSL 在单个 IP 和端口上工作(q1)使用NameBasedVirtual 托管和 SNI(q2)。
但问题是它不适用于某些较旧的浏览器,例如 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
然后我按照所示设置我的 vhost 文件问题1。我重新启动了 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 地址有关)。
所以我又回到了原来的问题。在哪里可以找到有关如何在同一 apache-ubuntu 服务器上设置多个 SSL 的实用分步指南?有人能帮我解决这个问题吗?
谢谢
答案1
你说的没错。基本上,你计划托管的每个 SSL 网站都必须有一个单独的 IP 地址。这样做的原因是 SSL 握手是先进行的,并且不知道你尝试连接的域名。只有在 SSL 握手完成后,HTTP 请求才会传输到服务器。
我的建议是采用更基本的设置并为每个域启用一个具有相应 IP 地址的 SSL 虚拟主机。
答案2
好的,我解决了我的问题。我需要转到区域文件/DNS管理器并将每个域指向其各自的A记录IP地址(例如,site2.com指向2.2.2.2)。之后,VirtualHost文件能够识别
<VirtualHost 2.2.2.2:80> and <VirtualHost 2.2.2.2:443>
这样,Apache 就可以开始将每个域名与其各自的 IP 地址关联。