当前位置:首页 > 行业动态 > 正文

HTTP严格传输安全协议怎么组装

HTTP严格传输安全协议(HSTS)通过服务器响应头”Strict-Transport-Security”实现,需配置max-age参数(单位秒)声明安全连接有效期,可选includeSubDomains覆盖子域名,浏览器将强制所有请求改用HTTPS协议

HTTP严格传输安全协议(HSTS)组装指南

HSTS基础概念

HSTS(HTTP Strict Transport Security)是一种Web安全策略,通过响应头Strict-Transport-Security强制客户端(如浏览器)仅通过HTTPS与服务器通信,即使用户输入http://,浏览器也会自动升级为https://


HSTS响应头格式

参数 说明 示例
max-age=秒 指定HSTS生效时间(浏览器缓存该策略的时长) max-age=31536000(1年)
includeSubDomains 是否应用于所有子域名 includeSubDomains
preload 是否提交到HSTS预加载列表(需域名验证) preload

完整响应头示例

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

HSTS组装步骤

确保已部署有效SSL证书

  • 必须为域名配置受信任的SSL/TLS证书(如Let’s Encrypt、CA机构颁发的证书)。
  • 通过https://访问网站时,证书需无错误。

配置服务器响应头

根据服务器类型修改配置文件:

服务器类型 配置文件位置 配置示例
Apache .htaccesshttpd.conf “`apache

Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”

| Nginx          | `nginx.conf`或站点配置文件      | ```nginx  
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;  
  ```                                              |
| IIS            | IIS管理器或`web.config`        | ```xml  
  <system.webServer>  
    <security><rewrite>  
      <rule name="HSTS" stopProcessing="true">  
        <match url="(.)" />  
        <conditions>  
          <add input="{HTTPS}" pattern="off" negate="true" />  
        </conditions>  
        <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" />  
      </rule>  
    </rewrite></security>  
    <headers><add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" /></headers>  
  </system.webServer>  
  ``` |
## 3. 验证配置生效
浏览器检查:通过F12开发者工具->Network->Headers,检查`Strict-Transport-Security`是否存在。
命令行测试:使用`curl -I https://yourdomain.com`查看响应头。
---
# 四、关键注意事项
1. 不可逆性:
   一旦浏览器记录HSTS策略,在`max-age`有效期内即使服务器取消该头,浏览器仍会强制HTTPS。
   若需撤销,需将`max-age`设置为`0`并等待浏览器清除缓存。
2. 子域名覆盖:
   `includeSubDomains`会将策略应用到所有子域名(如`api.example.com`)。
   确保所有子域名均支持HTTPS。
3. 预加载列表(Optional):
   提交域名到[HSTS预加载列表](https://hstspreload.org/),浏览器默认强制HSTS(即使未收到头)。
   要求:域名必须长期启用HSTS且`max-age>18周`。
---
# 五、测试与调试
| 工具/方法       | 用途                            |
|---------------------|--------------------------------------|
| `curl -I https://X` | 快速检查响应头是否包含HSTS           |
| Chrome开发者工具    | 实时查看HSTS策略及浏览器行为          |
| [HSTS Tester](https://hsts.test) | 在线检测HSTS配置有效性          |
---
 相关问题与解答
# 问题1:HSTS与HTTPS强制跳转的区别是什么?
解答:  
HTTPS强制跳转:通过服务器配置(如Nginx 301重定向)将`http://`请求转为`https://`,但客户端可手动修改URL绕过。  
HSTS:通过浏览器策略强制使用HTTPS,即使用户输入`http://`也会被自动升级,且策略长期生效(由`max-age`控制)。  
:HSTS是客户端级别的强制,比服务器跳转更安全。
---
# 问题2:如何从HSTS预加载列表中移除域名?
解答:  
1. 访问[HSTS预加载列表管理页面](https://hstspreload.org/).  
2. 提交域名移除请求,需提供域名所有权证明(如DNS TXT记录或文件验证)。  
3. 审核通过后,浏览器将在下一次预加载列表更新时移除该域名。  
注意:移除后,浏览器仍可能缓存旧策略,需等待`max-age`过期(最长1年)。
0