关于HSTS - 强制浏览器使用HTTPS与服务器创建连接

2020 年 04 月 25 日 阅读数: 5
关于HSTS - 强制浏览器使用HTTPS与服务器创建连接

前几天用谷歌浏览器访问一个网站, 浏览器提示您的连接不是私密连接, 原因是网站的证书过期了.

本想着要忽略掉这个错误继续访问的, 结果点击高级按钮之后, 并没有一个仍然访问的链接可以点击, 于是花了点时间研究了一下提示信息, 见下图:

HSTS网站 错误提示信息

图中最后一段话提到了您目前无法访问...... 因为此网站使用了HSTS.

那么HSTS是个啥❓ , 为什么使用了之后只要证书过期就无法访问❓

带着这个问题, 我跑到图书馆借了一本关于HTTPS的专业书Google了一下, 终于找到了答案.

🎉🎉🎉

HSTS, 全称: HTTP Strict Transport Security, 是国际互联网工程组织 IETF 正在推行一种新的Web安全协议, 它的作用是强制客户端(如浏览器)使用 HTTPS 与服务器创建连接。

采用 HSTS 协议的网站将保证浏览器始终连接到该网站的 HTTPS 加密版本,不需要用户手动在 URL 地址栏中输入加密地址。

该协议将帮助网站采用全局加密,用户看到的就是该网站的安全版本。

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

非加密传输时设置的 HSTS 字段无效!

比如,https://xxx.com 的响应头含有 Strict-Transport-Security: max-age=31536000; includeSubDomains

这意味着两点:

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

  2. 在接下来的一年中,如果 xxx.com 服务器发送的 TLS 证书无效(如证书过期/证书中域名与实际访问域名不匹配等),用户不能忽略浏览器警告继续访问网站。

同时为了防止用户首次安装浏览器或者手动清除了本地关于 HSTS 网站的状态导致的安全问题, Chrome 同时维护了一个叫做 HSTS Preload List 的网站列表, 访问这个列表中的网站默认使用 HSTS 规则, 如:

  • Google

  • Paypal

  • Twitter

  • Simple

  • Linode

  • Stripe

  • Lastpass

如果你自己的网站也开启了 HSTS 的支持并且希望将自己的网站放入这个列表中, 可以在 这里 提交申请.

HSTS 目前已经被主流浏览器(Chrome, Firefox, Safari, Opera, Edge, IE)支持, 如果你的网站是 HTTPS 的, 不妨试着开启 HSTS 的支持, 强制客户端与服务器使用 https 协议进行数据的交换来提高安全性.

参考链接:

用户头像

遇见

关注

A good code is like a story not a puzzle 2019.08.08 加入

人生是 B 和 D 之间的 C 选择。

评论

发布
暂无评论
关于HSTS - 强制浏览器使用HTTPS与服务器创建连接