HTTP严格传输安全协议怎么查看配置?HSTS配置检查方法
- 云服务器
- 2026-07-05
- 9
HTTP 严格传输安全(HSTS, HTTP Strict Transport Security)是一种 Web 安全策略机制,它允许 Web 服务器声明浏览器或其他可接受客户端只能使用 HTTPS 连接来访问该资源,配置 HSTS 的核心在于 HTTP 响应头中的 Strict-Transport-Security 字段。
要正确查看和评估 HSTS 配置,我们需要深入解析该头部的各个参数,并通过工具验证其生效情况,以下是详细的配置查看指南。
核心配置参数解析
Strict-Transport-Security 头部的格式通常如下:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
我们需要关注以下三个关键参数:
| 参数名 | 说明 | 建议配置值/状态 |
|---|---|---|
| max-age | 指定浏览器应将此策略保持多长时间(以秒为单位),在此期间,浏览器将自动将所有 HTTP 请求转换为 HTTPS。 | 至少 31536000 秒(1年),较短的时间(如几天)无法提供长期保护,且容易因过期导致用户再次遭遇降级攻破。 |
| includeSubDomains | 可选参数,如果存在,该策略不仅适用于当前主机,还适用于所有子域名。 | 强烈建议启用,防止攻破者通过未配置 HSTS 的子域名(如 dev.example.com)发起中间人攻破,进而威胁主域名。 |
| preload | 可选参数,如果存在,表示网站所有者希望将域名列入浏览器的 HSTS 预加载列表中。 | 仅在确认完全准备好后启用,一旦列入预加载列表,即使浏览器首次访问也是 HTTPS,且极难移除,需确保所有子域名也支持 HTTPS。 |
如何查看 HSTS 配置
通过浏览器开发者工具查看
这是最直接的方法,适用于检查当前正在访问的网站。

- 在浏览器中打开目标网站(确保是 HTTPS 连接)。
- 按下 F12 或右键点击页面选择“检查”打开开发者工具。
- 切换到 Network(网络) 标签页。
- 刷新页面,在请求列表中找到第一个请求(通常是文档请求,Type 为 document)。
- 点击该请求,在右侧面板中找到 Response Headers(响应头)。
- 查找 Strict-Transport-Security 字段。
示例输出:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
解读:该网站设置了 2 年的有效期,包含子域名,并申请了预加载。
通过命令行工具查看
使用 curl 命令可以清晰地看到服务器返回的所有头部信息。

输出示例:
HTTP/2 200 date: Mon, 01 Jan 2024 00:00:00 GMT content-type: text/html; charset=utf-8 strict-transport-security: max-age=31536000; includeSubDomains ...
如果返回结果中没有 strict-transport-security 字段,则说明该网站未配置 HSTS。
使用在线安全扫描工具
对于批量检查或更详细的分析,可以使用以下工具:
- SSL Labs (Qualys): 访问 https://www.ssllabs.com/ssltest/,输入域名,在报告中的 “Security Practices” 部分,会明确列出 HSTS 的状态、max-age 值以及是否包含子域名。
- Mozilla Observatory: 提供详细的 Web 安全配置审计,包括 HSTS 的合规性检查。
常见配置错误与最佳实践
在查看配置时,需警惕以下常见问题:
- max-age 过短:max-age 小于 10886400 秒(125天),不符合 Mozilla 的 HSTS 预加载要求,且保护力度较弱。
- 缺少 includeSubDomains:这会导致攻破者可以利用未配置 HSTS 的子域名进行中间人攻破,从而窃取主域名的会话 Cookie。
- 过早启用 preload:如果网站尚未完全迁移到 HTTPS,或者存在不支持 HTTPS 的子域名,提前启用 preload 会导致用户无法访问网站。
- HTTP 页面未重定向:HSTS 仅告诉浏览器“下次访问时用 HTTPS”,它本身不会将当前的 HTTP 请求重定向到 HTTPS,服务器必须同时配置 HTTP 到 HTTPS 的 301 重定向。
HSTS 预加载列表(Preload List)
启用 preload 参数后,网站管理员需要手动将域名提交到浏览器的 HSTS 预加载列表中,目前主要支持 Chrome (Google)、Firefox (Mozilla) 和 Safari (Apple)。

- 提交地址:
- Google: https://hstspreload.org/
- Mozilla: https://addons.mozilla.org/en-US/firefox/addon/hstspreload/ (或通过 https://hstspreload.org/ 统一入口)
注意:一旦域名被加入预加载列表,即使浏览器清除了缓存,也会强制使用 HTTPS,如果配置错误(如证书过期),用户将无法访问网站,直到列表更新或域名被移除(移除过程可能需要数周)。
相关问题与解答
问题 1:如果我在 HSTS 头中设置了 max-age=0,会发生什么?
解答:
设置 max-age=0 是一种特殊的指令,用于删除之前设置的 HSTS 策略,如果浏览器之前已经缓存了该域名的 HSTS 策略,当它收到 max-age=0 的响应头时,会立即清除该缓存,这通常用于测试环境或当网站暂时无法提供 HTTPS 服务时,以避免用户因强制 HTTPS 而无法访问,但在生产环境中,这等同于禁用了 HSTS 的保护,应谨慎使用。
问题 2:HSTS 能防止所有类型的中间人攻破吗?
解答:
不能完全防止,HSTS 主要防止的是协议降级攻破(即攻破者将 HTTPS 请求强制转换为 HTTP)和证书欺骗攻破(在首次连接时),HSTS 无法防止以下情况:
- 用户首次访问:如果用户第一次访问网站,且尚未缓存 HSTS 策略,攻破者仍可能拦截首次 HTTP 请求并返回恶意证书,必须配合 HTTP 到 HTTPS 的 301 重定向使用。
- 恶意软件或企业代理:如果用户的设备上安装了恶意软件,或者企业网络部署了中间人代理(如某些公司防火墙会自签证书并安装根证书),HSTS 无法阻止这些本地或网络层的拦截。
- DNS 截持:DNS 被截持指向恶意服务器,且该服务器提供有效的 HTTPS 证书(或通过其他手段欺骗),HSTS 本身无法识别 DNS 层面的错误,除非结合 DNSSEC 使用。