问题
我现在的问题是,https://domain.com 没有重定向到 https://www.domain.com 并显示了一个不可信任的SSL证书。
这与以下 ruby-on-rails 的解决方案相关:redirect to 'www' before force_ssl
问题
是否有一种方法可以在SSL要求生效之前重定向到带有www的域名?
我正在使用PHP。
问题
我现在的问题是,https://domain.com 没有重定向到 https://www.domain.com 并显示了一个不可信任的SSL证书。
这与以下 ruby-on-rails 的解决方案相关:redirect to 'www' before force_ssl
问题
是否有一种方法可以在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地址,则可以使用 Server Name Indication 使用两个不同的证书,但这相当复杂。)
最简单的方法是获得一个适用于 domain.com
和 www.domain.com
的有效证书。可以使用具有多个主题备用名称条目的单个证书来完成此操作。大多数 CA 应该能够颁发此类证书。有些无需额外费用即可执行此操作。
重定向响应是通过HTTP协议发出的。为了接收这样的响应/命令,客户端首先需要建立一个HTTP连接。如果客户端试图建立HTTP_S_连接,则SSL协商需要先完成。
换句话说,不行。URL https://domain.com
对于您的应用程序无效。没有客户端应该知道这个特定的地址,因此也不应该尝试访问它。您应该避免在任何地方提供此URL,以便客户端不会尝试访问它。实际上,您似乎不想为该域运行HTTPS服务器,因此您应该将其关闭,以便客户端根本无法通过HTTPS连接到domain.com
。