【问题标题】:mod_rewrite for www redirect using SSL使用 SSL 进行 www 重定向的 mod_rewrite
【发布时间】:2013-07-09 04:52:27
【问题描述】:

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

我们使用带有以下 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 都抱怨主机名不匹配(无法验证身份)

【问题讨论】:

  • 我会检查您的证书是否有两个主题备用名称条目:有和没有 www。
  • 谢谢 Bruno... StackExchange 上的新手海报,所以现在就看到你的 cmets

标签: redirect mod-rewrite ssl dns cname


【解决方案1】:

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

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

  1. 通配符 SSL 证书,涵盖 *.site.co .. 这些不需要在购买时定义

  2. 具有一个或多个 主题备用名称 (SAN) 的 SSL 证书,涵盖 www.site.co .. mail.site.co .. 等。您购买证书,指定每个 SAN

【讨论】:

  • 实际上,通配符证书本身并不一定有效。 *.site.co 不包括 site.co(点不会被忽略)。大多数通配符证书都能正常工作,因为它们在同一包中具有 *.site.cosite.co 的 SAN,但此处与通配符无关。
猜你喜欢
  • 2016-01-31
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多