【发布时间】:2013-12-26 16:40:55
【问题描述】:
您好,我正在尝试为一个站点提供两个子域,并且两个子域都应该在 SSL 下。我购买了通配符 SSL 证书并安装了它。在我的 vhosts 文件中,我有 5 个定义,www (80)、app (80/443) 和 staging (80/443)。所有子域都在 80 端口下工作。
这是我的 vhosts.conf 文件的 sn-p:
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerAdmin support@---
ServerName app.---
DocumentRoot /var/www/vhosts/---/app/www/
ErrorLog /var/www/vhosts/---/app/log/error.log
<Directory "/var/www/vhosts/---/app/www">
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin support@---
ServerName app.---
DocumentRoot /var/www/vhosts/---/app/www/
ErrorLog /var/www/vhosts/---/app/log/ssl.log
SSLEngine ON
SSLCertificateFile /etc/httpd/conf.d/ssl/---/ssl.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/---/ssl.key
SSLCertificateChainFile /etc/httpd/conf.d/ssl/---/intermediate.crt
<Directory "/var/www/vhosts/---/app/www">
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin support@---
ServerName staging.---
DocumentRoot /var/www/vhosts/---/staging/www/
ErrorLog /var/www/vhosts/---/staging/log/error.log
<Directory "/var/www/vhosts/---/staging/www">
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin support@---
ServerName staging.---
DocumentRoot /var/www/vhosts/---/staging/www/
ErrorLog /var/www/vhosts/---/staging/log/ssl.log
SSLEngine ON
SSLCertificateFile /etc/httpd/conf.d/ssl/---/ssl.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/---/ssl.key
SSLCertificateChainFile /etc/httpd/conf.d/ssl/---/intermediate.crt
<Directory "/var/www/vhosts/---/staging/www">
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
如果我改变这一行:
<VirtualHost *:443>
收件人:
<VirtualHost SERVER_IPADDRESS:443>
第一个定义将按预期工作并使用正确的证书。当我重新启动 Apache 时,我在终端中收到一条消息,指出存在重复的条目,并且只会使用第一个条目。
使用上面的 conf,我在终端中没有收到任何错误或警告,但我在 Apache 的日志中看到了这一点:
[warn] Init: You should not use name-based virtual hosts in conjunction with SSL!!
根据我在网上阅读的内容,警告是预期的,应该不是问题。
运行 configtest 显示语法正常。
问题似乎是使用 SSL 命名的虚拟主机。我已经在线检查了 3 个指南并尝试了各种方法(使用 *.domain.com 作为两者的 ServerName,使用 app.domain.com 作为 ServerAlias),子域作为指令(app.domain.com:443)但不能t 找出正确的组合以仅使用一个 IP 地址为 80 和 443 下的每个子域提供服务。
我知道这是可能的。关于我缺少什么的任何想法?
【问题讨论】:
标签: apache ssl virtualhost