在单个域证书上https:// www重定向

时间:2018-09-02 10:07:53

标签: .htaccess ssl ssl-certificate

如果我具有

的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。相反,我得到这个:

enter image description here

无需购买https://example.com的SSL证书就可以解决此问题吗?

1 个答案:

答案 0 :(得分:1)

要了解您需要哪些证书,您需要了解浏览器何时检查它们,以及服务器何时有机会发布重定向。

HTTPS本质上是在TLS会话内“包装”一个HTTP会话,因此请求和响应看起来非常大致,如下所示:

  • 浏览器:我可以进行TLS会话吗?
  • 服务器:当然,让我们开始做加密工作吧!
  • 浏览器:您使用什么X509证书签名?如果有帮助,我将在“ example.com”上请求资源
  • 服务器:这是“ example.com”的证书,以及一些中间证书,因此您可以将其追溯到您信任的颁发者。
  • 浏览器:好的,符合我的要求。让我们谈谈HTTP。
  • 浏览器:我想在host example.com上获取资源/。
  • 服务器:请将您的用户重定向到以下新网址:https://www.example.com

如您所见,当服务器有任何重定向的机会时,浏览器已经需要建立TLS连接并决定信任它,因此将永远不允许无效的证书对重定向进行签名。 / p>

这实际上是一件非常好的事情:否则,劫持网站的人可以将其所有流量重定向到他们拥有证书的某个位置,而无需生成被劫持域的受信任证书。