0

HSTS preload列表提交后如何撤销?操作步骤与生效时间详解

2026.05.26 | youres | 13次围观

为什么需要撤销HSTS preload提交?

HSTS preload列表一旦生效,浏览器会强制使用该域名的HTTPS连接。但在某些场景下,你可能需要撤销这个设置:

  • 网站架构调整:计划将部分子域名改回HTTP(虽然不推荐)
  • 证书管理变更:更换CA供应商,过渡期可能需要临时回退
  • 误操作提交:不小心提交了不适合preload的域名
  • 业务方向变化:网站不再提供HTTPS服务(极少情况)

无论原因如何,撤销HSTS preload是一个需要谨慎操作的过程,因为浏览器缓存更新需要时间。

撤销HSTS preload的两种核心方式

根据hstspreload.org官方说明,撤销preload列表有两种方式:

方式一:通过hstspreload.org表单申请撤销

这是官方推荐的撤销方式,适用于已经被preload的域名。

操作步骤:

  1. 访问 https://hstspreload.org/removal/
  2. 输入你的域名并提交撤销申请
  3. 系统会验证你的域名是否满足撤销条件

方式二:通过修改HSTS header自动触发移除

如果你希望域名自动从preload列表中移除,需要满足以下条件:

  • 网站继续提供HTTPS服务(证书有效)
  • HSTS header仍然发送,但移除preload指令
  • header格式示例:Strict-Transport-Security: max-age=31536000; includeSubDomains(注意没有preload

当浏览器检测到你的域名发送了不含preload指令的有效HSTS header时,会认为你在请求从preload列表中移除。

详细操作步骤

步骤1:移除HSTS header中的preload指令

修改Nginx配置,从add_header Strict-Transport-Security中删除preload关键字。

修改前:

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

修改后:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

执行nginx -t检查配置,然后nginx -s reload重载。

步骤2:保持有效的HSTS header

注意:你不能完全移除HSTS header,必须继续发送一个不含preload的有效HSTS header。如果完全移除,浏览器会认为配置错误,可能导致preload列表移除申请被拒绝。

官方推荐的"knockout entry"方式:如果你确实想完全禁用HSTS,可以设置一个max-age=0的header:

add_header Strict-Transport-Security "max-age=0" always;

步骤3:提交撤销申请(可选但推荐)

即使你已经移除了preload指令,也建议通过hstspreload.org的撤销表单正式提交申请。这会加速从Chrome内置列表中移除的过程。

撤销后需要多长时间生效?

这是最关键的注意事项:HSTS preload列表的更新不是即时的

  • Chrome浏览器:preload列表随每次Chrome大版本更新而更新,通常需要6-12周才能覆盖大多数Chrome用户
  • Firefox:同样随浏览器版本更新,周期类似
  • 其他浏览器:基于Chromium的浏览器(Edge、Brave等)跟随Chrome的更新周期

此外,用户本地的HSTS缓存也需要被清除。即使preload列表更新了,已经访问过你网站的用户,其浏览器仍然会记住HSTS策略,直到max-age过期或被手动清除。

注意事项和常见问题

问题1:撤销preload后,已经记住HSTS的用户怎么办?

这些用户必须手动清除浏览器的HSTS缓存(Chrome可通过chrome://net-internals/#hsts删除域名),或者等待max-age自然过期。

问题2:能否立即生效?

不能。HSTS preload列表是硬编码在浏览器中的,没有"立即生效"的撤销机制。这也是为什么提交preload前要三思。

问题3:撤销期间网站还能访问吗?

能。只要你继续提供有效的HTTPS服务,网站就可以正常访问。撤销preload只是让浏览器"不再强制"HTTPS,而不是"禁用"HTTPS。

问题4:如何确认域名是否已从preload列表移除?

可以通过以下方式确认:

  • 在Chrome地址栏输入chrome://net-internals/#hsts,在"Query HSTS/PKP domain"中查询你的域名
  • 访问hstspreload.org,搜索你的域名,查看状态
  • 使用curl -I https://yourdomain.com检查HSTS header是否已不含preload指令

总结

撤销HSTS preload是一个需要耐心的过程。核心步骤是:移除header中的preload指令 → 继续提供有效HTTPS → 通过官方表单提交撤销申请 → 等待6-12周浏览器更新。

如果你确定要撤销,建议尽早开始操作,因为时间周期很长。同时,也要做好用户侧缓存未清除可能导致访问问题的应急预案。

如果你在配置HSTS header或排查preload问题时遇到困难,可以参考以下相关文章:

版权声明

本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论
881文章数 0评论数
作者其它文章