问题
我目前遇到的问题是https://domain.com没有重定向到https://www.domain.com并显示不受信任的 ssl 证书。
这与在 force_ssl 之前重定向到“www”的 ruby-on -rails 解决方案 有关
问题
有没有办法在 SSL 要求生效之前重定向到 www 域?
我正在使用 PHP。
问题
我目前遇到的问题是https://domain.com没有重定向到https://www.domain.com并显示不受信任的 ssl 证书。
这与在 force_ssl 之前重定向到“www”的 ruby-on -rails 解决方案 有关
问题
有没有办法在 SSL 要求生效之前重定向到 www 域?
我正在使用 PHP。
HTTPS 是基于 TLS/SSL 的 HTTP(请参阅RFC 2818),它首先在发送任何 HTTP 流量之前建立 SSL/TLS 连接。任何重定向(通过mod_rewrite
、自定义 PHP 代码或其他)将始终在 SSL/TLS 连接建立后应用。
不这样做实际上是一个安全问题,因为攻击者可以在证书验证之前重写和重定向客户端。
如果要从 重定向https://domain.com
到https://www.domain.com
,则获得的证书https://domain.com
必须对 有效domain.com
(然后,获得的证书https://www.domain.com
必须对 有效www.domain.com
)。
(如果两个主机在同一个 IP 地址上提供服务,您可以使用两个不同的证书和服务器名称指示,但这相当复杂。)
最简单的方法是获取对domain.com
和都有效的证书www.domain.com
。这可以使用具有多个主题备用名称条目的单个证书来完成。大多数 CA 应该能够颁发此类证书。有些人这样做不收取额外费用。
通过 HTTP 协议发出重定向响应。为了接收这样的响应/命令,客户端首先需要建立一个 HTTP 连接。如果客户端尝试建立 HTTP_S_ 连接,则 SSL 协商需要先完成。
换句话说,没有。该 URLhttps://domain.com
对您的应用无效。任何客户都不应该知道这个特定的地址,因此不应该尝试访问它。您应该避免在任何地方提供此 URL,以免客户端尝试访问它。事实上,您似乎不想为该域运行 HTTPS 服务器,因此您应该将其关闭,这样客户端将根本无法domain.com
通过 HTTPS 连接。
我发现的最佳解决方案是简单地购买带有主题替代名称的新 SSL 证书,这样您就可以在同一个证书中拥有 www 和非 www 并且两者都是有效的。通过这种方式,您可以安全地将https://www重定向到 https://,并且不会出现任何证书错误。