HSTS是英文HTTP Strict Transport Security (http严格传输安全)的缩写,这是一个征求意见版的RFC6797标准,意在制定一个标准,使得浏览器只能使用https协议访问某个网站。为此,谷歌还专门设置了一个HSTS预加载申请网站,用于用户提交域名以包含在谷歌浏览器的HSTS预加载列表中,这是一个硬编码到谷歌浏览器中的HTTPS 网站列表,大多数浏览器(Chrome,Firefox,Opera,Safari,IE 11和Edge)也使用基于谷歌浏览器的HSTS预加载列表。
HSTS是一个为了确保浏览器只使用https加密连接网站的安全措施,是对HTTP明文传输流量的零信任,得到了许多网站的支持。美国联邦政府管理和预算办公室(OMB)于2022年1月26日正式发布了《联邦政府零信任战略》,以支持第14028号美国总统行政命令"改善国家的网络安全",以使联邦政府机构的网络安全架构适应零信任原则。在“加密HTTP流量”部分,要求所有政府机构在所有互联网可访问的Web服务和API中都使用HTTPS,而为了确保政府网站都支持https加密,从2020年开始主流浏览器自动HSTS预加载所有新注册的.gov域名,并已宣布最终将整个美国政府专用.gov域名全部预置为仅限HTTPS访问,这一要求将改善美国各级政府机构的安全性和零信任状况。这个措施也是对各个政府机构是否能自觉地执行https加密政策的零信任,因为采取这个措施后,浏览器不会使用http协议访问,如果没有部署SSL证书实现https加密的话,网站就无法访问。
当然,要实现强制https加密,用户只需在网站部署SSL证书时设置为自动把http访问跳转到https访问即可,并不需要把网站域名提交给HSTS预加载数据库。而为了让基于Chromium内核的浏览器能自动使用https访问网站,只需简单地在Nginx服务器配置文件中增加一行这样的代码即可:
add_header Strict-Transport-Security “max-age=31536000; includeSubdomains; preload”
由于HSTS预加载是硬编码,不仅预加载列表会很长,而且新增加的网站域名必须在下次更新时才能生效,这是一个非常低效率的解决方案,但仍然是值得学习的解决方案。
笔者在此呼吁:为了保障我国政府网站的安全和保护政务机密信息的安全传输,也应该要求强制采用https访问.gov.cn域名的政府网站,所有.gov.cn域名的网站不能通过http访问,只能是https访问。这项强制措施完成后可以进一步要求只能采用SM2加密算法的https加密访问。当然,不一定必须采用HSTS预加载的笨办法,我们可以有更高效的更简单的方法。