Apache 上使用多个公共 IP 的多个 SSL 证书 - 不起作用

Apache 上使用多个公共 IP 的多个 SSL 证书 - 不起作用

我需要在单个 Apache 服务器上配置多个 SSL 证书。我已经知道我需要多个外部 IP 地址,因为我无法使用 SNI(此服务器上仅运行 Apache 2.2.3)。

我以为我已经正确配置了一切,但不幸的是,事情并没有按应有的方式进行(或者我应该说,没有按我期望的方式进行)...

在我的 httpd.conf 中我有:

NameVirtualHost *:80
NameVirtualHost *:443

假设我的公共 IP 是 12.0.0.1,私有 IP 是 192.168.0.1。

当我在虚拟主机中使用公共 IP 时,将显示我的默认网站,而不是我的虚拟主机中定义的网站,例如:

<VirtualHost 12.0.0.1:443>
   ServerAdmin [email protected]

   ServerName blablabla.site.com

   DocumentRoot /data/sites/blablabla.site.com

   ErrorLog /data/sites/blablabla.site.com-error.log
   #CustomLog /data/sites/blablabla.site.com-access.log common

   SSLEngine On
   SSLCertificateFile /etc/httpd/conf/ssl/blablabla.site.com.crt
   SSLCertificateKeyFile /etc/httpd/conf/ssl/blablabla.site.com.key
   SSLCertificateChainFile /etc/httpd/conf/ssl/blablabla.site.com.ca-bundle

   <Location />
       SSLRequireSSL On
       SSLVerifyDepth 1
       SSLOptions +StdEnvVars +StrictRequire
   </Location>

</VirtualHost>

当我在虚拟主机中使用私有 IP 时,一切都正常运行(显示在我的虚拟主机中定义的网站),例如:

<VirtualHost 192.168.0.1:443>
...same as above...
</VirtualHost>

我的服务器正在监听所有接口:

[root@grbictwebp02 httpd]# netstat -tulpn | grep :443
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      5585/httpd

我做错了什么?如果我无法让它工作,我就无法继续在另一个公共 IP 上添加第二个 SSL 证书...

如果需要更多信息请告诉我!

答案1

您需要使用绑定到服务器的 IP 地址来配置虚拟主机。

听起来你有一个 NAT 设备,它将你的公共 IP 转换为你的服务器已分配给网络接口的私有 IP。NAT 发生后,该数据包中没有公共 IP 的记录,因此映射需要在你的私有 IP 上进行。

(如果两个公共 IP 都通过 NAT 连接到同一个私有 IP,则需要进行更改 - 每个公共 IP 对应一个不同的私有 IP。)

答案2

您说的“不工作”是什么意思?Apache 错误日志中有任何错误吗?请发布完整的 VirtualHost 声明。

将您的问题陈述为:“我执行了以下步骤,在此处添加了以下配置,然后执行了此操作,我原本期望它会这样做。但它说了这样的话。出了什么问题?”您的帖子写得越清楚,您自己找到答案的机会就越大。

答案3

你应该先删除

NameVirtualHost 

行。NameVirtualHost 用于使用主机名分隔虚拟主机 - 由于您没有这样做,因此应该删除这些行。您还需要为虚拟主机指定端口,如下所示:

<VirtualHost 192.168.0.1:443>

您的私有主机可以工作而公共主机却不行的原因是,当您使用 NameVirtualHosts 并且您的服务器无法确定您想要哪个主机时,它将始终使用列出的第一个主机,因为这是默认主机。

相关内容