小火箭HTTPS解密配置教程,从证书生成到规则编写

本文详解Shadowrocket HTTPS解密(MITM)配置流程,涵盖证书生成、安装信任、解密规则编写及故障排查,适用于开发调试与网络分析场景,助你掌握中间人攻击原理在代理工具中的实际应用。

HTTPS解密的核心原理

小火箭(Shadowrocket)的HTTPS解密功能基于MITM(中间人攻击)架构,通过本地生成的CA证书充当通信双方的"中间人",解密流量审查后再重新加密转发,这在调试RESTful API、分析应用网络请求或排查跨境访问异常时极为实用,配置过程涉及证书管理和规则编写两个技术环节。

详细配置流程

生成CA证书

进入Shadowrocket → 设置 → 证书 → 生成新的CA证书,系统会自动创建2048位RSA密钥对,建议立即导出证书文件(.p12格式)备份至iCloud,避免重装应用后需重新配置所有解密规则。

安装并信任证书

iOS系统需完成双重信任机制:

  • 安装描述文件:设置 → 通用 → VPN与设备管理 → 选择Shadowrocket证书描述文件 → 安装
  • 启用完全信任:设置 → 通用 → 关于本机 → 证书信任设置 → 开启对应证书的总开关(关键步骤,遗漏会导致解密失败)

启用MITM功能

在配置文件的[MITM]段落添加:

[MITM]
enable = true
ca-passphrase = 你的证书密码
ca-p12 = 证书数据(Base64编码)
hostname = *.example.com, *.api.com

编写解密规则

[Rule]段指定需解密的域名类型:

[Rule]
DOMAIN,api.github.com,MITM
DOMAIN-SUFFIX,openai.com,MITM
DOMAIN-KEYWORD,analytics,MITM

DOMAIN精确匹配单域名,DOMAIN-SUFFIX匹配主域及所有子域,DOMAIN-KEYWORD匹配包含关键词的域名,解密规则应置于代理规则之前,确保流量先解密再分流。

代理组类型与解密协同

配置HTTPS解密时,代理组类型选择影响调试效率:

  • select(手动选择):固定使用特定节点,适合稳定的开发调试环境,避免自动切换导致证书验证中断
  • url-test(自动测速):按延迟自动选择最优节点,适用于需要低延迟的实时API监控场景
  • fallback(故障转移):主节点失效时自动切换,确保解密服务连续性,适合长时间抓包任务

TUN模式与系统代理的区别

开启HTTPS解密时,工作模式决定解密范围:

  • 系统代理:仅代理HTTP/HTTPS流量,部分采用独立网络库的应用可能绕过解密
  • TUN模式:创建虚拟网卡(utun接口)接管所有IP层流量(含TCP/UDP),确保解密规则对所有应用生效,适合游戏或视频类App的协议分析,但会增加约15%的电量消耗

分流规则优先级

解密规则与代理规则共存时,执行顺序至关重要:

  1. DOMAIN精确匹配(最高优先级)
  2. DOMAIN-SUFFIX后缀匹配
  3. DOMAIN-KEYWORD关键词匹配
  4. IP-CIDR段匹配(解密后生效)
  5. GEOIP地理IP匹配

建议将敏感域名(如银行、支付类)加入[MITM]skip-hostname列表排除解密,确保金融安全。

常见问题排查

现象:配置后应用提示"证书不受信任"或无法联网 原因:iOS证书信任设置二级开关未开启,或目标应用启用SSL Pinning(证书绑定) 解决:检查设置 → 通用 → 关于本机 → 证书信任设置;对Pinning应用需在[Rule]中添加DIRECT规则绕过解密

现象:部分HTTPS站点解密成功,部分返回TLS错误 原因:证书链不完整或SNI(服务器名称指示)不匹配 解决:在[MITM]段添加skip-server-cert-verify = true(仅调试环境使用),并检查域名拼写是否包含通配符

现象:解密后中文内容显示乱码 原因:编码转换过程中字符集识别错误 解决:在配置中添加force-http-engine-hosts = %APPEND% 目标域名,强制使用HTTP引擎处理响应体

节点选择与性能优化

进行HTTPS解密时,建议搭配具备国际网络加速能力的节点服务,解密过程涉及加密/解密双重计算,选择支持Shadowsocks或Trojan协议的订阅服务能降低CPU占用,对于需要频繁调试跨境API的开发者,具备BGP中转的节点能显著降低TLS握手延迟。

普通用户可选择支持自动故障转移的订阅方案,确保解密过程不因节点波动中断,进行学术资源访问或跨境办公需求时,稳定的订阅服务能保障MITM证书链验证的连续性。

定期清理小火箭的日志文件(设置 → 日志 → 清空),防止存储空间不足影响证书链的临时缓存写入。

您可以还会对下面的文章感兴趣:

暂无相关文章