0

HSTS浏览器缓存清除方法:彻底清除HSTS强制HTTPS缓存的完整指南

2026.05.25 | youres | 14次围观

什么是HSTS缓存

HSTS(HTTP Strict Transport Security,HTTP严格传输安全)是一种Web安全策略机制,通过服务器返回的Strict-Transport-Security响应头,告诉浏览器只能使用HTTPS连接该网站,而不得使用HTTP协议进行通信。

当浏览器接收到HSTS响应头后,会将域名及其HSTS策略缓存到本地。在缓存有效期内(由max-age指令指定),浏览器会强制使用HTTPS访问该域名,即使用户手动输入HTTP地址或点击HTTP链接,也会被自动重定向到HTTPS。

这种机制可以有效防止中间人攻击(MITM)和SSL剥离攻击,但也给开发测试和配置调试带来了一定麻烦。当需要回退到HTTP或重新配置HTTPS时,就需要清除HSTS缓存。

为什么要清除HSTS缓存

在以下场景中,你可能需要清除HSTS缓存:

  • 开发测试环境:本地开发时通常使用HTTP,但浏览器因为之前访问过生产环境的HTTPS版本,强制跳转到HTTPS,导致无法访问本地HTTP服务。
  • HSTS配置错误:配置HSTS时参数错误(如max-age设置过大、includeSubDomains误开启),导致网站无法访问,需要清除缓存进行调试。
  • 证书更换或域名更换:更换证书或域名后,旧的HSTS缓存可能导致浏览器拒绝连接,需要清除后重新建立安全连接。
  • 提交preload列表后反悔:误将域名提交到HSTS preload列表,需要撤销并提交移除申请,同时也需要清除本地HSTS缓存。
  • 排查HTTPS访问问题:当用户报告网站HTTPS访问异常时,清除HSTS缓存可以帮助判断是否是HSTS策略导致的问题。

Chrome清除HSTS缓存方法

Chrome提供了内置的HSTS管理工具,可以精确清除指定域名的HSTS缓存。

方法一:使用chrome://net-internals(推荐)

  1. 在Chrome地址栏输入 chrome://net-internals/#hsts 并回车。
  2. 页面会显示"HSTS"管理界面,找到"Delete domain security policies"区域。
  3. 在"Domain"输入框中填写要清除的域名(注意不要加http://https://前缀,直接写域名如example.com)。
  4. 点击"Delete"按钮。
  5. 在"Query HSTS/PKP domain"区域输入同样的域名,点击"Query"按钮,如果显示"Not found"或"Dynamic domain policies not found",说明清除成功。

方法二:清除浏览器全部缓存

  1. 按快捷键Ctrl+Shift+Del(Windows/Linux)或Cmd+Shift+Del(Mac)打开"清除浏览数据"窗口。
  2. 点击"高级"选项卡,查看详细选项。
  3. 时间范围选择"全部时间"。
  4. 勾选"缓存的图片和文件"(注意不要勾选"Cookie及其他网站数据",否则会退出登录状态)。
  5. 点击"清除数据"按钮。

Firefox清除HSTS缓存方法

Firefox的HSTS缓存存储在配置文件夹的SiteSecurityServiceState.txt文件中。

方法一:手动编辑SiteSecurityServiceState.txt(精确清除)

  1. 在Firefox地址栏输入about:support并回车。
  2. 在"应用程序基本信息"区域找到"配置文件文件夹",点击右侧的"打开文件夹"按钮。
  3. 关闭Firefox浏览器(这一步很重要,否则修改会被覆盖)。
  4. 在打开的文件夹中找到SiteSecurityServiceState.txt文件。
  5. 用记事本或任何文本编辑器打开该文件。
  6. 搜索你要清除的域名,删除对应行(或直接清空整个文件以清除所有HSTS缓存)。
  7. 保存文件并重启Firefox。

方法二:清除历史记录(简单粗暴)

  1. 按快捷键Ctrl+Shift+Del打开"清除最近的历史记录"窗口。
  2. 时间范围选择"全部"。
  3. 勾选"缓存"。
  4. 点击"立即清除"。

Edge清除HSTS缓存方法

Edge基于Chromium内核,因此清除方法与Chrome几乎完全相同。

方法一:使用edge://net-internals(推荐)

  1. 在Edge地址栏输入 edge://net-internals/#hsts 并回车。
  2. 后续步骤与Chrome相同:在"Delete domain security policies"区域输入域名,点击"Delete"。

方法二:清除浏览器缓存

  1. Ctrl+Shift+Del打开"清除浏览数据"窗口。
  2. 选择"全部时间",勾选"缓存的图像和文件",点击"立即清除"。

Safari清除HSTS缓存方法

Safari的HSTS缓存清除方法因版本而异。

方法一:通过偏好设置清除网站数据

  1. 打开Safari,点击顶部菜单栏的"Safari" -> "偏好设置"(或"设置")。
  2. 选择"隐私"选项卡。
  3. 点击"管理网站数据..."按钮。
  4. 在搜索框输入要清除的域名,选中后点击"移除"。
  5. 点击"完成"。

方法二:使用终端命令刷新DNS缓存(macOS)

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

方法三:删除HSTS缓存文件(macOS)

  1. 关闭Safari。
  2. 打开Finder,按Cmd+Shift+G,输入~/Library/Cookies并回车。
  3. 找到HSTS.plist文件,删除它(或备份后删除)。
  4. 重启Safari。

命令行方法:使用curl验证HSTS状态

清除HSTS缓存后,可以使用curl命令验证HSTS策略是否仍然存在。

# 查看网站的响应头,检查是否包含Strict-Transport-Security
curl -I https://www.youres.cn

# 只看响应头中的Strict-Transport-Security
curl -I https://www.youres.cn | grep -i "Strict-Transport-Security"

如果响应头中包含Strict-Transport-Security,说明服务器仍然在发送HSTS策略;如果不包含,说明服务器已关闭HSTS,或者浏览器缓存已被清除(需要重新访问一次才能确认)。

常见问题与解决方法

清除HSTS缓存后仍然强制HTTPS跳转

  • 域名在HSTS preload列表中:Preload列表是硬编码在浏览器中的,无法通过普通方法清除。需要向HSTS Preload Removal提交移除申请,等待浏览器更新(可能需要几个月)。
  • 浏览器缓存未完全清除:尝试重启浏览器,或清除所有浏览数据(包括Cookie)。
  • 服务器端仍然返回HSTS头:检查Nginx/Apache配置,确保已删除Strict-Transport-Security响应头。

如何验证HSTS是否已彻底清除

  1. 使用curl命令查看响应头。
  2. 在Chrome的chrome://net-internals/#hsts中查询域名状态。
  3. 尝试用HTTP访问网站(如http://example.com),如果不再自动跳转HTTPS,说明HSTS已清除。

开发环境中如何避免HSTS干扰

  • 使用不同的子域名(如dev.example.com)进行开发,避免使用已启用HSTS的生产域名。
  • 在Nginx配置中,仅为生产环境启用HSTS,开发环境不发送HSTS响应头。

相关文章推荐

版权声明

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

发表评论