网站不用http 301跳转 https而直接访问https的方法

现在网络安全越来越被重视,从而通过 ssl访问 https网站也就越来越普遍了。但在网站全站 HTTPS后,如果用户手动敲入网站的 HTTP地址,或者从其它地方点击了网站的 HTTP链接,就会依赖于服务端 301/302跳转才能使用 HTTPS服务。

直接https

从而第一次的 HTTP请求就有可能被劫持,导致请求无法到达服务器,从而构成 HTTPS降级劫持。这个问题目前可以通过 HSTS(HTTP Strict Transport Security,RFC6797)来解决。

HSTS简介

不用http 301跳转 https

HSTS(HTTP Strict Transport Security)是国际互联网工程组织 IETF发布的一种互联网安全策略机制。采用 HSTS策略的网站将保证浏览器始终连接到该网站的 HTTPS加密版本,不需要用户手动在 URL地址栏中输入加密地址,以减少会话劫持风险。

HSTS响应头格式

Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]

  • max-age,单位是秒,用来告诉浏览器在指定时间内,这个网站必须通过 HTTPS协议来访问。也就是对于这个网站的 HTTP地址,浏览器需要先在本地替换为 HTTPS之后再发送请求。
  • includeSubDomains,可选参数,如果指定这个参数,表明这个网站所有子域名也必须通过 HTTPS协议来访问。
  • preload,可选参数,一个浏览器内置的使用 HTTPS的域名列表。

HSTS Preload List

虽然 HSTS可以很好的解决 HTTPS降级攻击,但是对于 HSTS生效前的首次 HTTP请求,依然无法避免被劫持。浏览器厂商们为了解决这个问题,提出了 HSTS Preload List方案:内置一份可以定期更新的列表,对于列表中的域名,即使用户之前没有访问过,也会使用 HTTPS协议。

目前这个 Preload List由 Google Chrome维护,Chrome、Firefox、Safari、IE 11 和 Microsoft Edge都在使用。如果要想把自己的域名加进这个列表,首先需要满足以下条件:

  • 拥有合法的证书(如果使用SHA-1证书,过期时间必须早于2016年);
  • 将所有HTTP流量重定向到HTTPS;
  • 确保所有子域名都启用了HTTPS;
  • 输出HSTS响应头:
  • max-age不能低于18周(10886400秒);
  • 必须指定includeSubdomains参数;
  • 必须指定preload参数;

即便满足了上述所有条件,也不一定能进入HSTS Preload List。


 

转载请注明链接地址:荐爱小站 » 网站不用http 301跳转 https而直接访问https的方法

赞 (9) 赏 !

觉得文章有用就打赏一下吧,赠人玫瑰手有余香!

支付宝扫一扫打赏

微信扫一扫打赏