我有许多 Apache VirtualHosts,每个都使用一个专用的 SSLCertificateFile。
这是 VirtualHost 的配置示例:
<VirtualHost *:443>
ServerName subdomain.domain.localhost
DocumentRoot "/Users/<my_user_name>/Sites/users/public"
RackEnv development
<Directory "/Users/<my_user_name>/Sites/users/publ`enter code here`ic">
Order allow,deny
Allow from all
</Directory>
# SSL Configuration
SSLEngine on
#Self Signed certificates
SSLCertificateFile /private/etc/apache2/ssl/server.crt
SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
SSLCertificateChainFile /private/etc/apache2/ssl/ca.crt
</VirtualHost>
由于我使用乘客偏好面板,这是 apache2 的一部分httpd配置文件文件:
<IfModule passenger_module>
NameVirtualHost *:80
<VirtualHost *:80>
ServerName _default_
</VirtualHost>
Include /private/etc/apache2/passenger_pane_vhosts/*.conf
</IfModule>
我可以对所有 VirtualHosts 使用单个 SSLCertificateFile(我听说过通配符)而不是为每个 VirtualHost 创建一个吗?如果是的话,我该如何更改上面列出的文件?
答案1
如果您的所有域虚拟主机都存在于一个域内,那么可以。例如,foo.example.com、bar.example.com 和 www.example.com 都可以共享为 *.example.com 创建的单个证书。
如果您以其他方式执行此操作,您将收到证书警告。
您在配置中唯一需要做的就是指定适当的证书文件。
答案2
不可以。SSL 证书是为子域名(即 secure.example.com)颁发的,但一些证书签名机构确实为域名 *.example.com 提供通配符证书,但没有通配符证书。这会损害 SSL 信任关系的工作方式。
通常,域名通配符比常规证书要贵得多。