【发布时间】:2016-03-01 06:30:14
【问题描述】:
我在 Apache 2.4 网络服务器上运行两个网站。它配置为 NameBaseVhost,并且都有自己的由 Godaddy 颁发的通配符 ssl 证书(*.site1.com 和 *.site2.com)。 每件事都运行良好。当我通过它的子域 www.site1.com 和 www.site2.com 访问网站时,它工作正常。 Apache 有一个重写规则来将 http 重定向到 https,因此这两个网站都可以完美地重定向。
现在的问题是当我将根域重定向到 www 时,对于 site2.com,它给了我错误。
Error code: ssl_error_bad_cert_domain
site2.com uses an invalid security certificate.
The certificate is only valid for the following names:
*.site1.com, site1.com
site1.com的httpd配置
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R]
# Redirect root domain to www
RewriteCond %{HTTP_HOST} ^site1\.com$ [NC]
RewriteRule ^(.*)$ https://www.site1.com/$1 [R=301,L]
<VirtualHost *:443>
ServerName www.site1.com
DocumentRoot /var/www/html/site1/public/
SSLEngine On
SSLCertificateFile /etc/pki/tls/certs/site1/site1.crt
SSLCertificateKeyFile /etc/pki/tls/private/site1/site1.key
SSLCertificateChainFile /etc/pki/tls/certs/site1/gd_site1.crt
Header always set Strict-Transport-Security "max-age=31536000;
</VirtualHost>
site2.com 的 Httpd 配置
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R]
# Redirect root domain to www
RewriteCond %{HTTP_HOST} ^site2\.com$ [NC]
RewriteRule ^(.*)$ https://www.site2.com/$1 [R=301,L]
<VirtualHost *:443>
ServerName www.site2.com
DocumentRoot /var/www/html/site2/public/
SSLEngine On
SSLCertificateFile /etc/pki/tls/certs/site2/site2.crt
SSLCertificateKeyFile /etc/pki/tls/private/site2/site2.key
SSLCertificateChainFile /etc/pki/tls/certs/site2/gd_site2.crt
Header always set Strict-Transport-Security "max-age=31536000;
</VirtualHost>
如何解决这个问题?
【问题讨论】:
-
我已经知道带有 SNI 的 NameBasedSSLVHosts。在服务器 Apache 上启用了 SNI,我认为在 httpd.conf 文件中无需为此进行其他配置。尝试将根域重定向到 site2.com 的 www 时会出现问题。否则它工作正常。
-
离题。迁移到 serverfault.com。
标签: linux apache ssl ssl-certificate