在Apache上使用多个公共IP的多个SSL证书 – 无法正常工作

我需要在一台Apache服务器上configuration多个SSL证书。 我已经知道我需要多个外部IP地址,因为我不能使用SNI(仅在此服务器上运行Apache 2.2.3)。

我认为我已经正确configuration了所有东西,不幸的是,它们不能正常工作(或者我应该说,正如我期望的那样)。

在我的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证书…

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

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

这听起来像你有一个NAT设备,将您的公共IP转换为您的服务器分配给networking接口的专用IP。 NAT发生后,该公网IP报文中没有logging,需要在私网IP上进行映射。

(如果您将两个公有IP地址都NAT到相同的私有IP,则需要更改 – 每个公有IP有不同的私有IP。)

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

陈述你的问题为:“我做了以下步骤,在这里添加了下面的configuration,然后做了这个,我也希望它能做到这一点,但是这是说的,怎么了? 你写的post越清晰,你自己也find答案的机会就越大。

你应该开始删除

 NameVirtualHost 

线。 NameVirtualHost用于当您使用主机名来分隔虚拟主机 – 因为你不这样做,你应该删除这些行。 您还需要为您的虚拟主机指定端口,如下所示:

 <VirtualHost 192.168.0.1:443> 

你的私人主机工作的原因,而不是公众的,因为当你使用NameVirtualHosts,你的服务器不能确定你想要哪个主机,它总是会使用列出的第一个,因为这是默认的。