上一篇
HTTP严格传输安全协议怎么搭建
- 行业动态
- 2025-04-27
- 4
要搭建HTTP严格传输安全(HSTS),需先部署有效SSL/TLS证书,然后在服务器配置中添加
Strict-Transport-Security: max-age=31536000
响应头,设置强制HTTPS连接的有效期(如1年),确保全站支持HTTPS后,通过此头部声明实现浏览器强制使用加密协议,防止协议降级及劫持攻击
HTTP严格传输安全协议(HSTS)搭建指南
前提条件
有效SSL/TLS证书
- 必须为域名部署受信任的SSL/TLS证书(DV/OV/EV)
- 推荐使用Let’s Encrypt免费证书或付费企业级证书
全站HTTPS支持
- 网站所有资源(图片/JS/CSS等)必须通过HTTPS加载
- 禁止混合内容(HTTP资源会被浏览器拦截)
核心配置步骤
服务器类型 | 配置位置 | 指令示例 | 生效范围 |
---|---|---|---|
Apache | .htaccess/httpd.conf | Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" | 当前域名及子域 |
Nginx | nginx.conf | add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always; | 当前域名及子域 |
IIS | web.config | <system.webServer> <httpProtocol> <customHeaders> <add name="Strict-Transport-Security" value="max-age=15768000; includeSubDomains; preload" /> </customHeaders> </httpProtocol> </system.webServer> | 当前域名及子域 |
Cloudflare | WAF规则 | 通过页面设置HSTS规则 | CDN全局生效 |
关键参数说明
参数 | 作用 |
---|---|
max-age=秒数 | 强制HTTPS的时长(建议≥15768000秒=18周) |
includeSubDomains | 是否包含所有子域名 |
preload | 申请加入浏览器根证书预加载列表(需满足严格要求) |
浏览器预加载申请
- 访问 https://hstspreload.org
- 提交域名并验证:
- 直接通过HTTPS访问(无重定向)
- 无外部链接指向非HTTPS资源
- 证书链完整且有效
- 审核周期约7-14天
验证方法
Chrome开发者工具
- F12 → Network → Header查看
Strict-Transport-Security
响应头
- F12 → Network → Header查看
在线检测工具
https://www.ssllabs.com/ssltest/ 或 https://securityheaders.io
注意事项
- 不可逆性:一旦浏览器记录HSTS策略,即使服务器删除该头信息,策略仍会持续到max-age到期
- 证书管理:更新证书时需保证无缝切换,避免出现证书错误导致网站不可访问
- 兼容性:IE11+支持,移动设备需iOS5+/Android4+
常见问题与解答
Q1:HSTS生效后如何紧急撤销?
A:无法直接撤销,需等待max-age时间到期,应急方案:
- 立即申请新证书并修复问题
- 修改DNS解析到临时HTTPS站点
- 联系浏览器厂商申请特殊撤销(非常难实现)
Q2:HSTS与HTTPS强制跳转有什么区别?
A:
| 特性 | HSTS | HTTPS强制跳转 |
|———————|——————————-|——————————–|
| 防护级别 | 浏览器级强制 | 服务器级跳转 |
| 抗改动能力 | 防止中间人修改跳转 | 可能被XSS/劫持修改 |
| 首次访问保护 | 预加载机制保障 | 首次仍需明文传输风险 |
| 子域名覆盖 | 自动包含所有子域 | 需单独配置每个子域 |