本文详解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%的电量消耗
分流规则优先级
解密规则与代理规则共存时,执行顺序至关重要:
DOMAIN精确匹配(最高优先级)DOMAIN-SUFFIX后缀匹配DOMAIN-KEYWORD关键词匹配IP-CIDR段匹配(解密后生效)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证书链验证的连续性。
定期清理小火箭的日志文件(设置 → 日志 → 清空),防止存储空间不足影响证书链的临时缓存写入。