目前,访问我们的 www URL 的用户会收到 SSL 错误,即“该网站的证书无效”。这是因为我们只有一个证书,它是为非WWW URL配置的:mysite.co
我们想要任何一个请求
http://www.mysite.co
https://www.mysite.co
去
https://mysite.co
相反的情况是可以接受的,因为我们的动机是通过只支付一个证书来最大限度地降低成本,无论是 www 还是没有 www。我读过 another post ,说 SSL 协商发生在服务器的任何响应之前(在我们的例子中是重定向),因此访问者在使用不在我们通用名称中的域时会收到警告。但是,我修改了 DNS 以包含 CNAME,以便所有 www.mysite.co 流量都重定向到 mysite.co,我们仍然在 Firefox 和 Safari 中看到错误
我们使用 Ubuntu 和以下 mod_rewrite
1) 在/etc/apache2/sites-available/mysite-ssl
<VirtualHost *:443>
RewriteEngine on
RewriteCond %{HTTP_HOST} www.mysite.com [NC]
RewriteRule ^(.*)$ https://mysite.com/$1 [R=permanent,L,NC]
ServerAdmin admin@mysite
ServerName mysite
ServerAlias www.mysite
... other stuff ...
</VirtualHost>
2) 在/etc/apache2/sites-available/mysite
<VirtualHost *:80>
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
有趣的是,当访问 WWW.mysite.co(http 和 https)时,Chrome 显示一切正常
但是 Firefox 和 Safari 都提示主机名不匹配(无法验证身份)
最佳答案
因此,经过更多阅读和研究后,上述规则可用于将流量从 www.site.co 重定向到 site.co
但是,使用一个 SSL 证书保护两个或更多 URL 的唯一方法是购买:
通配符 SSL 证书,涵盖 *.site.co .. 这些不需要在购买时定义
具有一个或多个主题备用名称 (SAN) 的 SSL 证书,涵盖 www.site.co .. mail.site.co .. 等。这些需要在以下情况下定义您购买证书,指定每个 SAN
关于redirect - 使用 SSL 的 www 重定向的 mod_rewrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17584537/