Redirect 使用SSL重写www重定向的mod_

Redirect 使用SSL重写www重定向的mod_,redirect,mod-rewrite,ssl,dns,cname,Redirect,Mod Rewrite,Ssl,Dns,Cname,目前,用户在访问我们的www URL时遇到SSL错误,即“此网站的证书无效”。这是因为我们只有一个证书,它是为非WWW URL:mysite.co配置的 我们想要任何一个的请求 http://www.mysite.co https://www.mysite.co 去 https://mysite.co 相反的情况是可以接受的,因为我们的动机是通过只支付一个证书(www或不使用www)来最小化成本。我确实读过,说SSL协商发生在服务器的任何响应之前(在我们的情况下是重定向),所以访问者在

目前,用户在访问我们的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中看到错误

我们使用Ubuntu进行以下修改

<VirtualHost *:80>
        RewriteEngine on
        ReWriteCond %{SERVER_PORT} !^443$
        RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
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>

重新启动发动机
重写cond%{HTTP_HOST}www.mysite.com[NC]
重写规则^(.*)$https://mysite.com/$1[R=永久,L,NC]
服务器管理员admin@mysite
服务器名mysite
服务器别名www.mysite
... 其他东西。。。
2) 在/etc/apache2/sites available/mysite中

<VirtualHost *:80>
        RewriteEngine on
        ReWriteCond %{SERVER_PORT} !^443$
        RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>

重新启动发动机
重写cond%{SERVER\u PORT}^443$
重写规则^/(*)https://%{HTTP_HOST}/$1[NC,R,L]
有趣的是,Chrome在访问WWW.mysite.co(http和https)时表示一切正常


但是Firefox和Safari都抱怨主机名不匹配(无法验证身份)

因此,经过更多的阅读和研究,上述规则可以将流量从www.site.co重定向到site.co

但是,使用一个SSL证书保护两个或多个URL的唯一方法是购买:

  • 包含*.site.co.的通配符SSL证书。。这些不需要在购买时定义

  • 包含一个或多个主题备选名称(SAN)的SSL证书,覆盖www.site.co。。mail.site.co。。等等。在购买证书时需要定义这些内容,并指定每个SAN


  • 我会检查您的证书是否有两个主题备选名称条目:有和没有www.thank you Bruno。。。StackExchange上的noob海报,所以现在只看你的评论实际上,通配符证书本身并不一定有效
    *.site.co
    不包括
    site.co
    (不忽略点)。大多数通配符证书之所以有效,是因为它们有一个SAN for
    *.site.co
    site.co
    作为同一个包的一部分,但通配符与此无关。