目前,用户访问我们的 www URL 时会出现 SSL 错误,即“该网站的证书无效”。这是因为我们只有一个证书,它是为非 WWW URL 配置的:mysite.co
我们想要任何一个请求
http://www.mysite.co
https://www.mysite.co
要去
https://mysite.co
反过来也是可以接受的,因为我们的动机是通过只支付一个证书(www 或不带 www)来最小化成本。我确实读过另一篇文章,说 SSL 协商发生在服务器的任何响应之前(在我们的例子中是重定向),因此访问者在使用不是我们常用名称的域时会收到警告。但是,我修改了 DNS 以包含 CNAME,以便所有 www.mysite.co 流量重定向到 mysite.co,我们仍然在 Firefox 和 Safari 中看到错误
我们使用带有以下mod_rewrite的 Ubuntu
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>
有趣的是,Chrome 在访问 WWW.mysite.co(http 和 https)时一切正常
但是 Firefox 和 Safari 都抱怨主机名不匹配(无法验证身份)