由于通配符 SSL,我需要重写 https://domain.com => https://www.domain.com

由于通配符 SSL,我需要重写 https://domain.com => https://www.domain.com

就像主题所说的那样,我需要重写https://domain.com=> https://www.domain.com。但是我为域设置了通配符 SSL,并且根域与 *.domain.com 不匹配,因此浏览器会出现错误,

domain.com 使用无效的安全证书。

该证书仅对*.domain.com有效

这是我当前的虚拟主机配置

<VirtualHost 127.0.0.1:443>
        ServerAdmin [email protected]
        DocumentRoot /usr/local/app/domain/webapps/www
        JkMount /* somestuff
        ServerName domain. com
        ServerAlias www.domain.com 
        ErrorLog logs/domain.com-error_log
        CustomLog logs/domain.com-access_log combined
        Customlog logs/domain.com-deflate_log deflate
        RewriteEngine on
        RewriteCond %{HTTP_HOST}   ^domain\.com [NC]
        RewriteRule ^/?(.*)         https://www.domain.com/$1 [L,R,NE]
        SSLEngine on
        SSLCertificateFile /etc/httpd/conf/ssl.crt/x.domain.com.crt
        SSLCertificateKeyFile /etc/httpd/conf/ssl.key/x.domain.com.key

</VirtualHost>

我希望 RewriteEngine 能在 SSL 加载之前启动,但不起作用。如果不获取仅适用于根域的新证书,是否可以解决这个问题?

答案1

不幸的是,客户端正在与之通信的名称是由客户端而不是服务器根据证书进行检查的。就客户端而言,它正在与 domain.com 通信,而不是 <something>.domain.com - 它不会意识到在服务器端进行的任何 URL 重写。

因此,您需要为其他名称提供额外的证书,以避免证书错误。

答案2

如果不终止 SSL 连接,主机头通常不可见,因此证书需要对客户端输入的任何内容有效……您可以重写http://域名.comhttps://www.domain.com但是(当将示例变成 url 时,评论代码为什么要删除 www?^^)

答案3

看起来像是 DigiCertSSL 加会为您完成此事。

通过 DigiCert 对主题备用名称的创新使用,您的 DigiCert SSL Plus 证书将同时保护 www.example.com 和 example.com(带有和不带有 www!),从而减少浏览器警告的可能性。

相关内容