关于 HSTS - 强制浏览器使用 HTTPS 与服务器创建连接
前几天用谷歌浏览器访问一个网站, 浏览器提示您的连接不是私密连接
, 原因是网站的证书过期了.
本想着要忽略掉这个错误继续访问的, 结果点击高级
按钮之后, 并没有一个仍然访问
的链接可以点击, 于是花了点时间研究了一下提示信息, 见下图:
图中最后一段话提到了您目前无法访问...... 因为此网站使用了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
这意味着两点:
在接下来的一年(即31536000秒)中,浏览器只要向 xxx.com 或其子域名发送HTTP请求时,必须采用 HTTPS 来发起连接。比如,用户点击超链接或在地址栏输入 http://xxx.com/ ,浏览器应当自动将 http 转写成 https,然后直接向 https://xxx.com/ 发送请求。
在接下来的一年中,如果 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 协议进行数据的交换来提高安全性.
参考链接:
版权声明: 本文为 InfoQ 作者【遇见】的原创文章。
原文链接:【http://xie.infoq.cn/article/4ad680a1b86bbb31d23728399】。文章转载请联系作者。
评论