12

问题

我目前遇到的问题是https://domain.com没有重定向到https://www.domain.com并显示不受信任的 ssl 证书。

这与在 force_ssl 之前重定向到“www”的 ruby​​-on -rails 解决方案 有关

问题

有没有办法在 SSL 要求生效之前重定向到 www 域?

我正在使用 PHP。

4

3 回答 3

29

HTTPS 是基于 TLS/SSL 的 HTTP(请参阅RFC 2818),它首先在发送任何 HTTP 流量之前建立 SSL/TLS 连接。任何重定向(通过mod_rewrite、自定义 PHP 代码或其他)将始终在 SSL/TLS 连接建立后应用。

不这样做实际上是一个安全问题,因为攻击者可以在证书验证之前重写和重定向客户端。

如果要从 重定向https://domain.comhttps://www.domain.com,则获得的证书https://domain.com必须对 有效domain.com(然后,获得的证书https://www.domain.com必须对 有效www.domain.com)。

(如果两个主机在同一个 IP 地址上提供服务,您可以使用两个不同的证书和服务器名称指示,但这相当复杂。)

最简单的方法是获取对domain.com和都有效的证书www.domain.com。这可以使用具有多个主题备用名称条目的单个证书来完成。大多数 CA 应该能够颁发此类证书。有些人这样做不收取额外费用。

于 2012-06-07T11:33:26.973 回答
1

通过 HTTP 协议发出重定向响应。为了接收这样的响应/命令,客户端首先需要建立一个 HTTP 连接。如果客户端尝试建立 HTTP_S_ 连接,则 SSL 协商需要先完成。

换句话说,没有。该 URLhttps://domain.com对您的应用无效。任何客户都不应该知道这个特定的地址,因此不应该尝试访问它。您应该避免在任何地方提供此 URL,以免客户端尝试访问它。事实上,您似乎不想为该域运行 HTTPS 服务器,因此您应该将其关闭,这样客户端将根本无法domain.com通过 HTTPS 连接。

于 2012-06-07T10:03:17.500 回答
1

我发现的最佳解决方案是简单地购买带有主题替代名称的新 SSL 证书,这样您就可以在同一个证书中拥有 www 和非 www 并且两者都是有效的。通过这种方式,您可以安全地将https://www重定向到 https://,并且不会出现任何证书错误。

于 2016-02-29T21:22:19.567 回答