我已在网站的主域上运行 SSL,但当我使用以下配置时,SSL 将不会在子域上运行。我应该将 * 替换为子域的名称还是其他名称?
#
# domain.com (/etc/apache2/sites-available/domain.com)
#
<VirtualHost *:80 *:443>
ServerAdmin [email protected]
ServerName www.domain.com
ServerAlias domain.com
ServerAlias XX.XX.XX.XX
# Directory Root.
DocumentRoot /sites/domain.com/www/
# CGI Directory
ScriptAlias /cgi-bin/ /sites/domain.com/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
# Logfiles
ErrorLog /sites/domain.com/logs/error.log
CustomLog /sites/domain.com/logs/access.log combined
# Enable SSL
SSLEngine On
SSLCertificateFile /sites/domain.com/ssl/star_domain_com.crt
SSLCertificateKeyFile /sites/domain.com/ssl/domain.key
SSLCertificateChainFile /sites/domain.com/ssl/DigiCertCA.crt
SetEnvIf User-Agent ..*MSIE.*. nokeepalive ssl-unclean-shutdown
</VirtualHost>
#
# support.domain.com (/etc/apache2/sites-available/support.domain.com)
#
<VirtualHost *:80 *:443>
ServerName support.domain.com
ServerAlias support.domain.com:443
# Enable SSL
SSLEngine On
SSLCertificateFile /sites/ikeyless.com/ssl/star_domain_com.crt
SSLCertificateKeyFile /sites/ikeyless.com/ssl/domain.key
SSLCertificateChainFile /sites/ikeyless.com/ssl/DigiCertCA.crt
SetEnvIf User-Agent ..*MSIE.*. nokeepalive ssl-unclean-shutdown
# Directory Root.
DocumentRoot /sites/support.domain.com/www/
# Logfiles
ErrorLog /sites/support.domain.com/logs/error.log
CustomLog /sites/support.domain.com/logs/access.log combined
</VirtualHost>
更新
我希望这个单一 SSL 证书(它是通配符证书)能够跨主域和所有子域(包括 support.domain.com 和 live.support.domain.com)运行。我应该如何进行设置?
答案1
由于 HOST 标头在请求内部经过加密,因此每个 IP 地址只能使用 HTTP 1.1 运行一个 SSL 网站,因此服务器在解密之前不知道它针对的是哪个 vhost。
如果您有多个 IP 地址,请将其替换为 xxx.xxx.xxx.xxx 中的 IP 地址,这样它应该可以工作,但请尝试 configtest:
/etc/init.d/httpd configtest
或者如果它不是实时服务器,只需重新启动 apache。