如果我具有
的SSL证书https://www.example.com
但不是
https://example.com
我发现here应该使用
#First rewrite any request to the wrong domain to use the correct one (here www.)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#Now, rewrite to HTTPS:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
用于正确的重定向。除一种情况外,这似乎可行:
如果我输入https://example.com
,则不会重定向到https://www.example.com
。相反,我得到这个:
无需购买https://example.com
的SSL证书就可以解决此问题吗?
答案 0 :(得分:1)
要了解您需要哪些证书,您需要了解浏览器何时检查它们,以及服务器何时有机会发布重定向。
HTTPS本质上是在TLS会话内“包装”一个HTTP会话,因此请求和响应看起来非常大致,如下所示:
如您所见,当服务器有任何重定向的机会时,浏览器已经需要建立TLS连接并决定信任它,因此将永远不允许无效的证书对重定向进行签名。 / p>
这实际上是一件非常好的事情:否则,劫持网站的人可以将其所有流量重定向到他们拥有证书的某个位置,而无需生成被劫持域的受信任证书。