上一篇
HTTP严格传输安全协议如何安装
- 行业动态
- 2025-04-27
- 7
通过服务器配置添加Strict-Transport-Security响应头,启用HTTPS并提交域名至hstsp
HTTP严格传输安全协议(HSTS)安装指南
HSTS原理简介
HTTP严格传输安全协议(HSTS)通过服务器响应头Strict-Transport-Security
强制客户端(如浏览器)使用HTTPS与服务器建立连接,主要作用:
- 防止协议降级攻击
- 防止Cookie劫持
- 强制所有子域名使用HTTPS
安装前提条件
- 有效SSL证书:必须已部署受信任的SSL/TLS证书
- 服务器配置权限:需要修改网站服务器配置文件
- 域名所有权验证:需完成域名所有权验证
主流服务器配置方法
服务器类型 | 配置文件路径 | 配置指令 | 生效范围 |
---|---|---|---|
Apache | .htaccess/apache2/sites-available/.conf | Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" | 当前虚拟主机 |
Nginx | nginx.conf/sites-available/.conf | add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; | 当前服务器块 |
IIS | web.config | <system.webServer><security><rewrite><rules><rule name="HSTS"><action type="Rewrite" url="/" /><conditions><add input="{HTTP_HOST}" pattern="^example.com$" negate="false" /><add input="{HTTP_CF_IPCity}" pattern="^d{1,3}.d{1,3}.d{1,3}.d{1,3}$" negate="true" /></conditions><serverVariables><set name="HTTP_StrictTransportSecurity" value="max-age=31536000; includeSubDomains" /></serverVariables></rule></rewrite></security></system.webServer> | 整个站点 |
AWS ELB | 负载均衡器监听器 | 在”自定义HTTP标头”添加键值对:Strict-Transport-Security: max-age=31536000; includeSubDomains | 所有后端实例 |
配置参数说明
参数 | 说明 | 建议值 |
---|---|---|
max-age | 强制HTTPS有效期(秒) | 31536000(1年) |
includeSubDomains | 是否包含所有子域名 | 建议启用 |
preload | 是否提交到HSTS预加载列表 | 可选(需满足严格要求) |
验证配置有效性
Chrome开发者工具:
- F12打开控制台 → Security → 查看HSTS状态
- 检查
Strict-Transport-Security
响应头
在线检测工具:
- https://hstspreload.org/
- https://securityheaders.io/
注意事项
- 必须启用HTTPS:未部署SSL证书时配置HSTS会导致全站不可访问
- 缓存机制影响:CDN节点可能需要额外配置
- 证书有效期:建议使用2年以上有效期的证书
- 兼容性处理:需考虑旧版浏览器支持(IE11+)
常见问题处理
问题现象 | 解决方案 |
---|---|
配置后部分页面无法访问 | 检查SSL证书有效性,清除浏览器缓存 |
子域名仍可HTTP访问 | 确保includeSubDomains 参数正确配置 |
浏览器提示HSTS错误 | 检查响应头大小写(应为Strict-Transport-Security ) |
相关问题与解答
Q1:HSTS和HTTPS有什么区别?
A1:HTTPS是加密传输协议,解决数据明文传输问题;HSTS是安全策略协议,强制客户端使用HTTPS并拒绝HTTP请求,两者需配合使用,但属于不同层面的安全机制。
Q2:如何撤销已配置的HSTS?
A2:HSTS一旦生效无法立即撤销,需等待max-age
时间过期,应急处理方法:
- 立即删除HSTS配置
- 更换主域名SSL证书(私钥+公钥)
- 联系CDN服务商刷新缓存
- 通过Google Search Console提交移除预加载申请(如