HTTP严格传输安全协议怎么安装?HSTS配置教程
- 云服务器
- 2026-07-06
- 4
HTTP 严格传输安全(HSTS)是一种 Web 安全策略机制,它允许 Web 服务器声明浏览器或其他可遵循的 Web 用户代理只能通过 HTTPS 连接访问该服务器,启用 HSTS 可以有效防止中间人攻破(MITM)和协议降级攻破,确保用户与服务器之间的通信始终处于加密状态。
以下是安装和配置 HSTS 的详细指南,涵盖原理、主流服务器配置方法以及验证步骤。
核心原理与前置条件
在实施 HSTS 之前,必须确保您的服务器已经正确配置了 SSL/TLS 证书,并且所有 HTTP 请求都能重定向到 HTTPS,HSTS 是通过在 HTTP 响应头中添加 Strict-Transport-Security 字段来实现的。
关键参数说明:
- max-age:指定浏览器应将 HSTS 策略保留多长时间(以秒为单位),建议初始设置为 31536000(1年)。
- includeSubDomains:可选参数,指示 HSTS 策略是否适用于所有子域名。
- preload:可选参数,请求将域名加入浏览器的 HSTS 预加载列表。
主流 Web 服务器配置方法
不同的 Web 服务器软件配置 HSTS 的方法略有不同,以下是 Nginx、Apache 和 IIS 的配置示例。
Nginx 配置
在 Nginx 中,您可以通过 add_header 指令在服务器块(server block)中添加 HSTS 头,通常建议将此配置放在处理 HTTPS 的 server 块中。
注意:always 参数确保即使响应状态码是错误代码(如 404 或 500),HSTS 头也会被发送。
Apache 配置
在 Apache 中,您需要确保 mod_headers 模块已启用,然后使用 Header 指令添加 HSTS 头。
# 确保 mod_headers 已启用 # LoadModule headers_module modules/mod_headers.so <VirtualHost :443> ServerName example.com DocumentRoot /var/www/html # SSL 配置 SSLEngine on SSLCertificateFile /path/to/cert.pem SSLCertificateKeyFile /path/to/key.pem # 启用 HSTS Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" </VirtualHost>
Microsoft IIS 配置
在 IIS 中,您可以通过 web.config 文件或使用 URL Rewrite 模块来添加响应头。
通过 web.config 添加自定义响应头

通过 IIS 管理器
- 打开 IIS 管理器。
- 选择站点。
- 双击“HTTP 响应标头”。
- 在右侧操作面板点击“添加”。
- 名称填写 Strict-Transport-Security,值填写 max-age=31536000; includeSubDomains。
配置验证与测试
配置完成后,必须验证 HSTS 头是否正确返回,您可以使用浏览器开发者工具或命令行工具进行检查。
使用浏览器开发者工具
- 打开 Chrome 或 Firefox 浏览器。
- 访问您的网站(确保是 HTTPS)。
- 按 F12 打开开发者工具。
- 切换到“网络”(Network)标签页。
- 刷新页面,点击第一个请求。
- 在“响应标头”(Response Headers)中查找 Strict-Transport-Security。
使用 curl 命令
curl -I https://example.com
预期输出示例:
HTTP/2 200 strict-transport-security: max-age=31536000; includeSubDomains ...
HSTS 预加载(HSTS Preload)
为了获得最高级别的安全保护,建议将域名加入浏览器的 HSTS 预加载列表,这样,即使用户第一次访问您的网站(没有缓存的 HSTS 头),浏览器也会强制使用 HTTPS。
预加载步骤:

- 确保您的网站满足预加载要求:
- 仅支持 HTTPS。
- 所有子域名也支持 HTTPS。
- HSTS 头包含 includeSubDomains。
- max-age 至少为 31536000 秒(1年)。
- 没有重定向到 HTTP 或 HTTP 子域名。
- 访问 HSTS Preload List。
- 输入您的域名并提交检查。
- 如果检查通过,点击“Submit”按钮请求加入预加载列表。
警告:一旦加入预加载列表,撤销非常困难,请确保您的网站完全准备好再提交。
常见问题与注意事项
| 问题 | 说明 |
|---|---|
| 如果配置错误怎么办? | max-age 设置过短或配置错误,可能导致用户无法访问网站,建议先在测试环境验证。 |
| 是否影响 SEO? | 不会,Google 等搜索引擎鼓励使用 HTTPS,HSTS 是最佳实践之一。 |
| 旧版浏览器支持情况 | 现代浏览器(Chrome, Firefox, Safari, Edge)均支持 HSTS,IE11 及更早版本不支持,但这类浏览器已逐渐被淘汰。 |
| 子域名管理 | 如果使用了 includeSubDomains,所有子域名都必须配置有效的 SSL 证书,否则用户访问子域名时会看到安全警告。 |
相关问题与解答
问题 1:启用 HSTS 后,如果我的 SSL 证书过期或配置错误,用户会面临什么风险?
解答:
启用 HSTS 后,SSL 证书过期或配置错误,用户将无法访问您的网站,甚至可能看到严重的浏览器安全警告,且无法轻易绕过,这是因为 HSTS 告诉浏览器“只允许通过 HTTPS 访问”,浏览器会拒绝任何不安全的连接尝试,在启用 HSTS 之前,务必确保 SSL 证书有效且自动续期机制正常,建议先在 max-age 设置为较短时间(如 3600 秒)的情况下进行测试,确认无误后再增加到 1 年。
问题 2:HSTS 预加载列表中的域名可以随意移除吗?
解答:
不可以随意移除,一旦域名被加入 HSTS 预加载列表,浏览器会在本地硬编码该策略,即使您从服务器上删除了 HSTS 头,浏览器仍然会强制使用 HTTPS 访问该域名,要移除域名,您需要:
- 从服务器上移除 HSTS 头。
- 等待浏览器缓存过期(这可能需要很长时间)。
- 访问 HSTS Preload List,点击“Remove”按钮申请移除。
- 等待浏览器更新预加载列表(这可能需要数周甚至数月)。
在提交预加载之前,请确保您的网站架构稳定,不会轻易改变 HTTPS 策略。
