Fiddler抓包进阶:一文搞懂Android系统证书原理与OpenSSL操作全流程

张开发
2026/4/20 9:56:21 15 分钟阅读

分享文章

Fiddler抓包进阶:一文搞懂Android系统证书原理与OpenSSL操作全流程
Fiddler抓包进阶一文搞懂Android系统证书原理与OpenSSL操作全流程在移动应用开发和安全研究中HTTPS抓包是调试和分析网络流量的重要手段。然而随着Android系统安全机制的不断升级特别是Android 7.0引入的网络安全配置变更传统的用户证书安装方式已无法满足某些场景的需求。本文将带您深入理解Android证书系统的运作机制并掌握使用OpenSSL进行证书转换和安装的完整流程。1. HTTPS中间人攻击原理与Android证书体系HTTPS协议通过TLS/SSL加密确保通信安全而抓包工具如Fiddler实现HTTPS流量解析的核心原理就是中间人攻击(MITM)。当Fiddler作为代理服务器时它会动态生成服务器证书建立客户端与Fiddler、Fiddler与目标服务器的两条独立加密通道。Android系统采用分层的证书信任体系用户证书存储在/data/misc/user/0/cacerts-added/适用于Android 6.0及以下版本系统证书位于/system/etc/security/cacerts/需要root权限修改网络安全配置Android 7.0引入的network_security_config.xml可进一步限制证书信任关键版本差异Android版本信任的证书类型特殊要求≤6.0用户系统证书无7.0仅系统证书需要root9.0强化证书固定可能需修改应用配置提示从Android 11开始即使使用系统证书部分应用仍可能因证书固定(Certificate Pinning)而拒绝连接此时需要结合Xposed等框架进行更深入的修改。2. OpenSSL工具链深度解析OpenSSL是处理证书格式转换和哈希计算的核心工具其x509子命令提供了丰富的证书操作功能。以下是关键参数解析# 查看证书基本信息 openssl x509 -in certificate.pem -noout -text # DER转PEM格式 openssl x509 -inform DER -in cert.cer -out cert.pem # PEM转DER格式 openssl x509 -outform DER -in cert.pem -out cert.cer证书哈希值的计算是系统证书安装的关键步骤。Android系统要求系统证书必须使用特定的命名规则# 计算PEM格式证书的哈希值 openssl x509 -inform PEM -subject_hash_old -in cert.pem # 计算DER格式证书的哈希值 openssl x509 -inform DER -subject_hash_old -in cert.cer得到的哈希值将作为系统证书的文件名如abcdef12.0其中.0是固定后缀当存在哈希冲突时会递增使用.1、.2等。3. Fiddler证书转换为系统证书全流程3.1 获取Fiddler根证书启动Fiddler进入Tools Options HTTPS点击Export Root Certificate to Desktop导出证书默认DER格式将证书文件FiddlerRoot.cer复制到工作目录3.2 证书格式转换与哈希计算使用OpenSSL进行转换# 转换为PEM格式可选 openssl x509 -inform DER -in FiddlerRoot.cer -out FiddlerRoot.pem # 计算哈希值 openssl x509 -inform DER -subject_hash_old -in FiddlerRoot.cer假设输出哈希值为e5c3944b则系统证书应命名为e5c3944b.0。3.3 准备系统证书文件将原始证书转换为系统证书格式# 保持DER格式 openssl x509 -inform DER -in FiddlerRoot.cer -out e5c3944b.0 # 或从PEM转换 openssl x509 -inform PEM -in FiddlerRoot.pem -out e5c3944b.0验证证书有效性openssl x509 -in e5c3944b.0 -noout -text4. 系统证书部署与验证4.1 推送证书到Android设备确保设备已root或使用可写system分区的自定义ROM通过ADB推送证书文件adb root adb remount adb push e5c3944b.0 /system/etc/security/cacerts/ adb shell chmod 644 /system/etc/security/cacerts/e5c3944b.04.2 权限设置系统证书必须具有正确的权限chown root:root /system/etc/security/cacerts/e5c3944b.0 chmod 644 /system/etc/security/cacerts/e5c3944b.04.3 验证安装效果重启设备确保证书加载在设置→安全→加密与凭据→信任的凭据中查看系统证书列表使用Fiddler进行HTTPS抓包测试常见问题排查证书不生效检查哈希计算是否正确、文件权限是否设置部分应用仍无法抓包可能是证书固定导致需结合其他工具绕过ADB remount失败尝试adb disable-verity后重启5. 进阶技巧与替代方案5.1 多证书管理当需要安装多个抓包工具证书时为每个证书计算独立哈希值避免命名冲突必要时使用.1、.2后缀定期清理不再使用的系统证书5.2 无root解决方案对于未root设备可考虑使用低版本Android模拟器≤6.0修改应用网络配置需反编译虚拟环境方案如VirtualXposed5.3 其他抓包工具适配相同原理适用于Charles、Burp Suite等工具工具默认证书格式典型哈希值前缀FiddlerDER (.cer)FiddlerCharlesPEM (.pem)CharlesBurp SuiteDER (.der)PortSwigger证书处理的核心命令本质相同只需调整输入文件路径和格式参数。在实际项目中我发现系统证书的安装成功率与设备ROM密切相关。某些厂商的自定义系统可能会额外验证证书签名这时可能需要更深入的修改。另外保持OpenSSL工具版本更新也很重要旧版本可能在哈希计算时出现兼容性问题。

更多文章