我正在尝试托管两个 HTTPS 站点。它们具有相同的主机名,但不同的端口和不同的证书。使用这样的配置,Apache 可以启动,但它们都为第一个虚拟主机提供证书。
<VirtualHost *:443>
ServerName idp.example.org
SSLCertificateFile /usr/local/apache/conf/ssl/app.crt
# ...
</VirtualHost>
<VirtualHost *:8443>
ServerName idp.example.org
SSLCertificateFile /usr/local/apache/conf/ssl/app.trust.crt
# ...
</VirtualHost>
我知道 SSL 层通常无法区分主机,唯一的区别是主机名(因为主机名在 HTTP 层),但在这种情况下,端口不同,所以应该没问题。Apache 是不是太傻了?
答案1
Apache 有点傻。它看到主机具有相同的端口ServerName
,因此使用它找到的第一个匹配的端口,即使端口不同。如果您ServerName
从其中一个或两个端口中删除声明,那么 Apache 将提供单独的证书。