我为虚拟主机和 SSL 做了一个复杂的设置。我发现了问题,我需要一个解决方案。问题是,我设置虚拟主机和服务器名称的方式是,LAST VirtualHost 指令将 SSL 证书文件与 ServerName 关联,而不管 IP 地址或 ServerAlias 是什么。
在这种情况下,www.site1.com 上的 SSL 使用在最后一个 VirtualHost www.site2.com 上建立的证书文件。
这是应该的工作方式吗?这似乎是因为它们都使用相同的 ServerName;但我认为这不会成为问题。我专门出于某种目的使用相同的 ServerName,我真的无法改变这一点。所以我需要一个好的解决办法。是的,我可以购买另一个 UCC SSL 并将它们都放在上面,但我已经这样做了;这些实际上已经是 UCC SSL。它们恰好是两个不同的 UCC SSL。
<VirtualHost 11.22.33.44:80>
ServerName somename
ServerAlias www.site1.com
UseCanonicalName On
RewriteEngine On
RewriteOptions Inherit
</VirtualHost>
<VirtualHost 11.22.33.44:443>
ServerName somename
ServerAlias www.site1.com
UseCanonicalName On
SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl.crt/cert1.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/cert1.key
SSLCertificateChainFile /usr/local/apache/conf/chain/gd_bundle.crt
RewriteEngine On
RewriteOptions Inherit
</VirtualHost>
<VirtualHost 55.66.77.88:80>
ServerName somename
ServerAlias www.site2.com
UseCanonicalName On
RewriteEngine On
RewriteOptions Inherit
</VirtualHost>
<VirtualHost 55.66.77.88:443>
ServerName somename
ServerAlias www.site2.com
UseCanonicalName On
SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl.crt/cert2.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/cert2.key
SSLCertificateChainFile /usr/local/apache/conf/chain/gd_bundle.crt
RewriteEngine On
RewriteOptions Inherit
</VirtualHost>
答案1
尝试在 VirtualHost 之外添加以下行:
名称虚拟主机 11.22.33.44:443 名称虚拟主机 55.66.77.88:443
答案2
要使用服务器名称指示,您需要 Apache 2.2.12 或更高版本。以前的版本不支持此 SSL 扩展。
(另一种选择是mod_gnutls
- 但是它不如官方的稳定mod_ssl
。)