Skip to content

[MITM] HTTPS 解密 ​

本节用于配置 HTTPS 流量解密的证书凭据与目标主机范围。

未解密的 HTTPS 流量仅暴露 TLS SNI 域名信息。URL Rewrite、Header Rewrite、Response 及 Script 中的 HTTP 处理要求解密后获取明文报文方可生效。

运行条件与约束 ​

启用 MITM 需满足以下条件与约束:

  • 根证书信任:客户端设备必须将配置的 CA 根证书加入系统受信任证书列表,否则 TLS 握手将验证失败。
  • 证书签发:代理截获 TLS 握手后使用 CA 凭据动态生成对应目标域名的主机证书与客户端握手,并与目标服务器建立 TLS 连接。
  • 证书固定与豁免:使用证书固定(Certificate Pinning)的应用域名需添加至 skip-hostname,以透传原始 TLS 流量。

字段详解 ​

本章节采用键值配置结构:

  • hostname(域名或通配符列表,默认空列表) 启用 HTTPS 解密的目标主机列表(逗号分隔)。支持通配符 *(如 *.example.com);仅匹配列表的主机执行解密。
  • skip-hostname(域名或通配符列表,默认空列表) 豁免解密的主机排除列表(逗号分隔)。优先级高于 hostname;匹配此列表的主机透传 TLS 流量。
  • ca-keystore-name(Keystore 名称,未设置) 按名称获取 P12,优先于直接 ca-p12 / ca-passphrase;获取或校验失败禁用 MITM,不使用直接字段降级。命名材料的密码由 Keystore 提供。
  • ca-p12(Base64 编码字符串,未设置) 根 CA 证书与私钥的 PKCS#12(.p12 / .pfx)归档数据,使用 Base64 编码。
  • ca-passphrase(字符串,未设置) 解锁 PKCS#12 归档数据所需的保护密码;导出证书未设置密码时可留空。

生效条件与处理流程 ​

  1. 触发条件:HTTPS 解密生效要求同时满足三项条件:通过 ca-keystore-name 或 ca-p12 配置了有效的 CA 材料与对应口令;客户端系统已信任该根证书;目标请求的 SNI 主机名命中 hostname 规则。
  2. 匹配判定优先级:对于发起的 HTTPS 会话,系统首先核对 skip-hostname 列表;若命中排除列表,直接透传原始 TCP 流量。仅当未命中排除列表且命中 hostname 列表时,才启动解密流程。
  3. 未解密流量流向:未启用解密或显式排除的主机流量,仅能由基于传输层与域名信息的 Rule(如 DOMAIN、DOMAIN-SUFFIX、IP-CIDR)进行路由分流,后续的 HTTP 规则将跳过此类会话。

配置示例 ​

基础配置 ​

ini
[MITM]
hostname = api.example.com, *.web.example.com
skip-hostname = *.apple.com, *.icloud.com, secure.payment.example.com
ca-p12 = <BASE64_CERT_DATA>
ca-passphrase = <PASSWORD>