本文只对HSTS配置进行说明,不对HSTS定义做解释说明,需要了解定义的请自行百度。
第一步
Nginx 配置
在网站配置文件的 server
块儿中添加下面一行
1 |
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; |
max-age
单位:秒 用来告诉浏览器在指定时间内,网站必须通过 HTTPS 协议来访问。也就是对于这个网站的 HTTP 地址,浏览器需要先在本地替换为 HTTPS 之后再发送请求。includeSubDomains
可选参数,指定这个参数,表明这个网站所有子域名也必须通过 HTTPS 协议来访问。preload
可选参数
然后输入命令重启 Nginx
1 |
service nginx restart |
Apache2 配置
1 |
# Optionally load the headers module: |
HTTP 重定向 HTTPS
1 |
<VirtualHost *:80> |
仅做重定向
1 |
<VirtualHost *:80> |
重启 Apache2
Lighttpd 配置
1 |
server.modules += ( "mod_setenv" ) |
重启 Lighttpd
第二步
提交 Preload List
HSTS Preload List
可以看到 HSTS 可以很好的解决 HTTPS 降级攻击,但是对于 HSTS 生效前的首次 HTTP 请求,依然无法避免被劫持。浏览器厂商们为了解决这个问题,提出了 HSTS Preload List 方案:内置一份可以定期更新的列表,对于列表中的域名,即使用户之前没有访问过,也会使用 HTTPS 协议。
目前这个 Preload List 由 Google Chrome 维护,Chrome、Firefox、Safari、IE 11 和 Microsoft Edge 都在使用。如果要想把自己的域名加进这个列表,首先需要满足以下条件:
- 拥有合法的证书(如果使用 SHA-1 证书,过期时间必须早于 2016 年)
- 将所有 HTTP 流量重定向到 HTTPS
- 确保所有子域名都启用了 HTTPS
- 输出 HSTS 响应头
- max-age 不能低于 18 周(10886400 秒);
- 必须指定 includeSubdomains 参数;
- 必须指定 preload 参数;
点击提交【可能需要搭梯子】
第一步
在 example.com
处输入域名点击 Check status and eligibility
第二步
第一步点击后,如果没什么意外情况,就会出现下图,然后将 Submit
下的两个选框打钩,点击 Submit yourdomain.com to the HSTS preload list
第三步
第二步提交后会提示成功字样,如下图所示
第四步
再次查询就会提示域名正在提交中…
一般审核时间在15-25天左右,耐心等待。
审核通过后,你的域名就会跟随此列表被推送到新版本的 Chrome, Firefox/Mozilla 和 Safari 浏览器中,从而实现更安全的HTTPS预加载。
暂无评论内容