HSTS的简介

一个网站接受一个HTTP的请求,然后跳转到HTTPS,用户可能在开始跳转前,通过没有加密的方式和服务器对话,比如,用户输入http://foo.com或者直接foo.com
这样存在中间人攻击潜在威胁,跳转过程可能被恶意网站利用来直接接触用户信息,而不是原来的加密信息。
网站通过HTTP Strict Transport Security通知浏览器,这个网站禁止使用HTTP方式加载,浏览器应该自动把所有尝试使用HTTP的请求自动替换为HTTPS请求。
(以上简介参考:https://developer.mozilla.org/zh-CN/docs/Security/HTTP_Strict_Transport_Security)

HSTS可以用来抵御SSL剥离攻击。SSL剥离攻击是中间人攻击的一种,由Moxie Marlinspike于2009年发明。他在当年的黑帽大会上发表的题为“New Tricks For Defeating SSL In Practice”的演讲中将这种攻击方式公开。SSL剥离的实施方法是阻止浏览器与服务器创建HTTPS连接。它的前提是用户很少直接在地址栏输入https://,用户总是通过点击链接或3xx重定向,从HTTP页面进入HTTPS页面。所以攻击者可以在用户访问HTTP页面时替换所有https://开头的链接为http://,达到阻止HTTPS的目的。
HSTS可以很大程度上解决SSL剥离攻击,因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP
另外,如果中间人使用自己的自签名证书来进行攻击,浏览器会给出警告,但是许多用户会忽略警告。HSTS解决了这一问题,一旦服务器发送了HSTS字段,用户将不再允许忽略警告。
(以上参考度娘)

看完上面的简单介绍,你应该也知道HSTS是干什么的了.
简单点说,开启了HSTS的站点,访问这个网站的请求都会自动把HTTP替换为HTTPS.该协议将帮助网站采用全局加密.
可以有效防止中间人攻击,提高网站安全甚至速度.

1. Nginx配置:

首先在你的站点安装好SSL证书,设置http协议强制跳转https
然后在nginx配置文件写入以下内容:

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

Snipaste_2019-10-16_15-57-21.png

如果你有参考我之前的文章:网站HTTPS的优化建议
那就不用重新设置了,之前已经有优化配置好.

2.预计加载HSTS

配置好以后,打开网址:HSTS Preload List Submission
提交你的域名审核,等待1-3天左右审核通过就可以加入HSTS预加载列表.
审核通过以后,浏览器后自动把http请求更改为https,这就免去了先加载http,再跳转https,可以优化网站速度(虽然表面感觉不到)
大多数主要浏览器(Chrome,Firefox,Opera,Safari,IE 11和Edge)具有基于Chrome列表的HSTS预加载列表。
Snipaste_2019-10-16_16-11-06.png


至此就完成了网站的HSTS配置和预加载.

最后修改:2019 年 12 月 26 日 05 : 28 PM
如果觉得我的文章对你有用,请随意赞赏