2026.05.24 | youres | 12次围观
什么是HSTS预加载列表?
HSTS(HTTP严格传输安全)是Web安全领域的重要响应头,作用是将HTTP请求强制跳转到HTTPS,防止中间人攻击、协议降级攻击。而HSTS预加载列表是Chrome、Firefox等主流浏览器内置的列表,加入后浏览器会直接对域名发起HTTPS请求,甚至第一次访问也不会用HTTP。
Nginx配置HSTS响应头
要申请HSTS预加载列表,第一步是先正确配置Nginx的HSTS响应头,配置不对会直接被拒绝。
基础配置示例
在Nginx的server块里添加以下配置:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
关键参数说明
max-age:HSTS策略的缓存时间,单位是秒,最低要求是31536000(1年),建议设置2年(63072000)更稳定。includeSubDomains:可选参数,表示HSTS策略应用到所有子域名,申请预加载列表必须加这个参数。preload:可选参数,声明你同意将域名加入HSTS预加载列表,申请必须加这个参数。always:Nginx的add_header参数,确保无论响应码是200还是4xx/5xx,都返回HSTS头,必须加,否则配置可能不生效。
提交HSTS预加载列表的完整步骤
配置完成且验证生效后,就可以提交到HSTS预加载列表了,步骤如下:
第一步:验证HSTS配置是否生效
提交前必须先验证HSTS头是否正确返回,有两个常用方法:
- 用curl命令验证:
curl -I https://你的域名,查看响应头里是否有Strict-Transport-Security,且参数正确。 - 用在线工具验证:比如SSL Labs的SSL Test,或者HSTS Preload List的官方验证工具。
第二步:提交到Chrome HSTS预加载列表
打开Chrome官方HSTS预加载提交页面:https://hstspreload.org/,输入你的域名,点击提交。提交前要确认:
- 主域名和所有子域名都已经配置HTTPS,且有有效的SSL证书。
- HSTS头的
max-age≥31536000,且包含includeSubDomains和preload参数。 - 域名的DNS解析正确,所有子域名都能正常访问HTTPS。
第三步:等待列表更新
提交后,Chrome的维护者会审核你的提交,审核通过后,会加入到下一个Chrome版本的预加载列表里,通常需要几周到几个月的时间,具体看Chrome的发布周期。
常见申请失败原因及解决方法
- max-age设置不够:最低要求是31536000,设置小了会被直接拒绝,解决方法是将max-age改为31536000以上。
- 缺少includeSubDomains或preload参数:申请必须加这两个参数,解决方法是在add_header里加上。
- 子域名HTTPS配置错误:如果加了includeSubDomains,但是某个子域名没配置HTTPS,会被拒绝,解决方法是确保所有子域名都配置正确的HTTPS。
- HSTS头没有在所有响应里返回:比如404页面没有返回HSTS头,会被拒绝,解决方法是加always参数。
如何验证HSTS预加载是否生效?
提交通过后,有两种方法验证:
- 查看Chrome的HSTS预加载列表源码:
https://chromium.googlesource.com/chromium/src/+/main/net/http/transport_security_state_static.json,搜索你的域名,能搜到就是生效了。 - 用Chrome访问你的域名,打开开发者工具,查看网络面板的响应头,确认HSTS头正确,并且第一次访问就用了HTTPS。
相关文章推荐
- Nginx安全响应头配置详解:8个关键Header让你的网站固若金汤
- Nginx CSP策略调优实战:从配置到防护的完整指南
- Nginx X-Frame-Options配置教程:防止网站被嵌入iframe的完整实战
总结
HSTS预加载列表是提升网站HTTPS安全性的重要手段,配置和申请流程并不复杂,只要按照本文的步骤一步步来,就能顺利通过审核。如果提交失败,对照常见错误原因排查,修改后重新提交即可。
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论