我有这个目录:
/var/www/domain.com/web/domains/example.com
/var/www/domain.com/web/domains/cdn.example.com
/var/www/domain.com/web/domains/app.example.com
这意味着,我不指定每个网站子域名,但我只需在这个目录中创建子域名,我的.htaccess 将处理此事。
现在我正在解决这个问题 - 我有域名 app.example.com 的 SSL 证书,但我还需要为 cdn.example.com 设置 SSL,但我不知道如何设置。我尝试为 cdn.example.com 生成 SSL 证书,但无法为 cdn.example.com 设置它 -> 如果我尝试这样做:
echo | openssl s_client -connect cdn.example.com:443 2>/dev/null
我仍然看到,证书主题是app.example.com
而不是cdn.example.com
,因此我认为它仍在尝试为该域获取错误证书。
SSL 目录正确。你在我的example.com.vhost
文件中看到任何错误吗?
<VirtualHost *:443>
DocumentRoot /var/www/example.com/web
ServerName app.example.com
ServerAlias app.example.com
<IfModule mod_ssl.c>
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3
SSLCertificateFile /var/www/clients/client1/web17/ssl/example.com.crt
SSLCertificateKeyFile /var/www/clients/client1/web17/ssl/example.com.key
</IfModule>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/example.com/web
ServerName cdn.example.com
ServerAlias cdn.example.com
<IfModule mod_ssl.c>
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3
SSLCertificateFile /var/www/clients/client1/web17/ssl/cdn/server.crt
SSLCertificateKeyFile /var/www/clients/client1/web17/ssl/cdn/server.key
</IfModule>
</VirtualHost>
答案1
您正在测试没有服务器名称标识符的 SSL。要为每个 IP 获得多个 SSL 证书,您的客户端需要使用信噪比扩大。
因此,要使用 OpenSSL 进行测试,您需要设置-servername
。您的命令将是:
echo | openssl s_client -servername cdn.website.com -connect cdn.website.com:443
答案2
在 Apache 2.2 下,您需要指令 NameVirtualHost 来指定共享同一 IP 的不同虚拟主机。
您复制粘贴的配置中似乎缺少以下内容:
NameVirtualHost *:443
只需定义一次,Apache 2.2 就会根据请求的主机头知道每个请求应该传递到哪个虚拟主机。