[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 归档数据所需的保护密码;导出证书未设置密码时可留空。
生效条件与处理流程
- 触发条件:HTTPS 解密生效要求同时满足三项条件:通过
ca-keystore-name或ca-p12配置了有效的 CA 材料与对应口令;客户端系统已信任该根证书;目标请求的 SNI 主机名命中hostname规则。 - 匹配判定优先级:对于发起的 HTTPS 会话,系统首先核对
skip-hostname列表;若命中排除列表,直接透传原始 TCP 流量。仅当未命中排除列表且命中hostname列表时,才启动解密流程。 - 未解密流量流向:未启用解密或显式排除的主机流量,仅能由基于传输层与域名信息的 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>