Apache2的多个SSL主机configuration(使用不同的密钥)

那么这个问题就比较难描述了。 我在服务器上安装了Webmin + Virtualmin。 我有多个IP地址在服务器(两个NIC绑定)。

假设networking是1.1.1.1/29

虚拟服务器现在是这样的:

masterdomain.com

  • 侦听所有地址( 1.1.1.21.1.1.6
  • SSL自签名证书(发行商masterdomain.com)

seconddomain.com

  • 听取1.1.1.4
  • SSL自签名证书(发行者seconddomain.com)

您看到,在masterdomain.com上使用HTTPS完全没有问题(除了抱怨,因为证书没有由CA签名)。 TLSv1说服务器你好,交换密钥,就完成了。

问题来自https://1.1.1.4/或https://seconddomain.com/ 。 Firefox说ssl_error_rx_record_too_long

我使用Wireshark来检查数据包,并发现它( seconddomain.com1.1.1.4 )从不发送密钥或“Hello”,而是在TLSv1响应中发送seconddomain.com的DocumentRoot的index.php。 Wireshark将其分类为Alert (Level: Fatal, Description: Unexpected Message) 。 前66个字节符合预期的标题,然后Apache插入已处理的index.php – > "<html><head><title>Main page of seconddomain.com!![...]"而不是SSL密钥。 这是在数据包中,应该把“服务器你好”(在客户端正确的“客户端你好”之后)。

我不知道如何解决这个问题,这很可能与VirtualHostconfiguration有关。 但seconddomain.com的VirtualHost拥有与masterdomain.com相同的configuration! – 除了只听一个IP而不是*(当然,SSL密钥,SuexecGroup和DocumentRoot字段是不同的)。

提前致谢。

我发现了这个错误。 你看,Virtualmin在apache2.conf产生了这个:

 NameVirtualHost 1.1.1.2:80 NameVirtualHost 1.1.1.2:443 NameVirtualHost 1.1.1.4 

因此不要区分1.1.1.4的https和http端口。 replace为:

 NameVirtualHost 1.1.1.2:80 NameVirtualHost 1.1.1.2:443 NameVirtualHost 1.1.1.4:80 NameVirtualHost 1.1.1.4:443 

解决问题。