Apache2 的多 SSL 主机配置(使用不同的密钥)

Apache2 的多 SSL 主机配置(使用不同的密钥)

嗯,这个问题比较难描述。我在一台服务器上安装了Webmin+Virtualmin。我在服务器上有多个IP地址(两个网卡绑定)。

假设网络是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.com或者1.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 密钥。这在数据包中应该放置“Server Hello”(在来自客户端的正确“Client Hello”之后)。

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

提前致谢。

答案1

我发现了错误。你看,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 端口。将其替换为:

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

解决问题。

相关内容