一 介绍
HSTS是 HTTP Strict Transport Security的全称。
就是强制浏览器必须使用HTTPS链接进行通讯的意思。如果浏览器不支持TLS访问,那么它就不能访问网站。为了防止中间人攻击。
这里,应该理解成浏览器,也就是客户端软件对用户进行的约束。
HSTS机制,在TLS层看来是没有任何区别的。区别在于浏览器端,浏览器端不提供忽略安全问题强制访问的按钮。好比 curl不提供-k参数。
如:
二 机制
HSTS是Server的属性。Client需要知道Server的这个属性。
有两个方法、
第一,提前约定。浏览器提前预置了这样的配置。默认就知道什么域名就是hsts的。
每次发起连接的时候就直接使用https,如果证书验证识别,将无法访问该网站。
第二,Server告诉client,它是HSTS的。
server为了这个目的,需要做两个事情。
A,用302把http重定向到https。
B,在https的response header里添加hsts的头。 client收到后,就会记录下来这个信息了。
这个信息里,有超时时间属性。
三 协议
举两个例子,头是这样的:
Strict-Transport-Security: max-age=31536000 Strict-Transport-Security: max-age=15768000 ; includeSubDomains
HSTS头,一共就支持这两个命令,max-age和includeSubDomains
max-age的单位是秒。
见:https://tools.ietf.org/html/rfc6797#section-6.1