开启HSTS后的坑

  • A+
所属分类:运维教程

首先说下HSTS是什么。HSTS是国际互联网工程组织IETE正在推行一种新的Web安全协议HTTP Strict Transport Security。采用HSTS协议的网站将保证浏览器始终连接到该网站的HTTPS加密版本,不需要用户手动在地址栏中输入加密地址。该协议将帮助网站采用全局加密,用户看到的就是该网站安全版本。

HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建安全的连接。服务器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议响应头中包含Strict-Transport-Security的字段。非加密传输时设置的HSTS字段无效。

比如,https://birdteam.net的响应头含有Strict-Transport-Security:max-age=31536000;includeSubDomains。这意味着两点:

接下来的一年(即31536000秒)浏览器只要向birdteam.net或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。比如,用户点击超链接或在地址栏输入http://birdteam.net,浏览器应自动将http转写成https,然后直接向https://birdteam.net/发送请求。

在接下来的一年中,如果birdteam.net服务器发送的TLS证书无效,用户不能忽略浏览器警告继续访问该网站。

简单来说,就是你开启HSTS,就意味着以后只能通过安全连接,访问所有*.birdteam.net的网站,否则无法访问。

而我只有主站开启了https,其它子站都是非https链接,所以不得不关闭此功能。

那如何关闭呢?

这是个坑,为什么这么说?

因为设置max-age=31536000时,其数值为缓存秒数,简单来说到了这个时间,才会解除限制,刚说了需要一整年,那么一整年的时间,网站都要使用安全链接才行。

有没有办法解除呢?还是有的,重新修改限制时间,改成1秒即可。

不过有个缺点,就是改完之后需要保留一段时间,确保访问过你网站的人,都重新读取了缓存时间,不然还要等上一年。

这是坑啊!

 

  • 问答中心
  • 微信小程序扫一扫
  • weinxin
  • 微信公众
  • 微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

上传图片