锁死是怎么形成的
HSTS 让浏览器强制使用 HTTPS,一旦证书异常或 HTTPS 停服,在有效期内用户无法通过点击继续访问,形成「锁死」。排查时先确认目标域名是否下发过该策略,再决定是修复 HTTPS 还是本地清理策略;服务端启用时应先用较短时长观察,稳定后再逐步提高,避免一次配置就锁定很长的窗口。
基本信息
| 关键参数 | 有效期、包含子域、预加载标记 |
|---|---|
| 本地清理 | 浏览器内置页面可删除单个域名的策略 |
| 影响范围 | 含子域标记时覆盖全部子域 |
| 风险点 | 证书故障期间用户无法忽略警告 |
典型使用场景
- 证书故障后的应急处置:判断是证书问题还是策略锁死
- 新站启用前的灰度:用小有效期观察再逐步提高
- 开发环境误启用导致无法访问时的清理
- 域名迁移时的策略评估
- 排错:区分浏览器缓存与该策略造成的强制跳转
渐进启用响应头
渐进启用响应头
add_header Strict-Transport-Security "max-age=300" always; # 先小额观察
# 稳定后逐步放大
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;本地清理与旁路验证
本地清理与旁路验证
Chrome:访问 chrome://net-internals/#hsts,在删除域名策略处填入域名
Firefox:清理站点安全服务状态,或用隐私窗口验证
命令行客户端不受该策略影响,可用来确认服务端实际响应参数与后果
| 参数 | 作用 | 风险 |
|---|---|---|
| 有效期 | 强制 HTTPS 的时长 | 设得过长难以快速回退 |
| 包含子域 | 覆盖全部子域 | 未支持 HTTPS 的子域会不可用 |
| 预加载标记 | 进入浏览器内置列表 | 撤销周期长,随版本发布生效 |
证书故障期间,被该策略覆盖的用户无法忽略警告继续访问;新域名启用时建议先短时长观察,确认全站与全部子域都支持 HTTPS 后再放大。
落地建议
- 启用前确认全部子域都支持 HTTPS
- 先短时长再用较长时长,逐步放大
- 同时配置证书到期告警,避免故障叠加
- 把策略状态纳入配置基线,防止误删误改
清理本地策略只影响当台设备,其他用户的浏览器仍会继续强制 HTTPS;因此根本修复仍然是恢复服务端的 HTTPS 可用性。