我正在尝试在一台 Apache 服务器上获取 2 个 SSL 服务器,
一个是主站点,另一个是子域,
以下是 .conf 文件:
<VirtualHost *:443>
SSLProxyEngine On
ProxyPreserveHost On
ServerName site.com
SSLEngine on
SSLCertificateFile /FOLDER/site.crt
SSLCertificateKeyFile /FOLDER/site.key
SSLCACertificateFile /FOLDER/site.ca-bundle
Timeout 2400
ProxyTimeout 2400
ProxyBadHeader Ignore
SetEnv proxy-initial-not-pooled
SetEnv proxy-nokeepalive 1
ProxyPass / http://10.0.0.101:8888/ retry=1 acquire=3000 timeout=600 Keepalive=On
ProxyPassReverse / http://10.0.0.101:8888/
</VirtualHost>
<VirtualHost *:443>
SSLProxyEngine On
ProxyPreserveHost On
ServerName sub.site.com
SSLEngine on
SSLCertificateFile /FOLDER/sub_Site.crt
SSLCertificateKeyFile /FOLDER/sub_Site.key
SSLCACertificateFile /FOLDER/sub_site.ca-bundle
Timeout 2400
ProxyTimeout 2400
ProxyBadHeader Ignore
SetEnv proxy-initial-not-pooled
SetEnv proxy-nokeepalive 1
ProxyPass / http://10.0.0.100:8888/ retry=1 acquire=3000 timeout=600 Keepalive=On
ProxyPassReverse / http://10.0.0.100:8888/
</VirtualHost>
由于某种原因,主 SSL 最终从子域中选择了 SSL 证书,
有人能看出我哪里做错了吗?
答案1
我认为这没有什么区别,但也许可以将 ServerName 条目移到每个 VirtualHost 部分的顶部。
如果符合您的业务需求,您可以探索的另一个选项是使用具有每个 FQDN 的主题备用名称的 SSL 证书(有时称为“多域”证书)。Apache wiki 有更多信息关于 SAN 和通配符证书。
答案2
您使用的是哪个版本的 Apache?此配置看起来不错,与我使用的 Apache 2.4 类似。为了使其正常工作,客户端必须支持 SNI,所有当前版本的现代浏览器都支持 SNI。