Skip to content

导出客户端证书配方 ​

📜 导出 App 的客户端证书(双向认证场景)。

前提 ​

  • ✅ Spawn 模式(-f)
  • ✅ App 有存储卡读写权限
  • ✅ App 配置了客户端证书
  • ✅ App 触发了取私钥(做了双向认证请求)

步骤 ​

1. 给存储权限 ​

bash
adb shell pm grant com.app android.permission.WRITE_EXTERNAL_STORAGE

2. spawn 抓包 ​

bash
python3 r0capture.py -U -f com.app -v -p out.pcap

3. 触发双向认证 ​

操作 App 做需要客户端证书的请求(登录、金融操作等)。

4. 看 r0capture 输出 ​

dumpClinetCertificate=>/sdcard/Download/com.app_a3F9c2D1b7.p12   pwd: r0ysue
at com.app.security.ClientCertManager.getCert(...)

5. 拉取 p12 ​

bash
adb pull /sdcard/Download/com.app_a3F9c2D1b7.p12 .

6. 用 keystore-explorer 打开 ​

  • 密码:r0ysue
  • 别名:client
  • 查看私钥和证书内容

7. 复用证书 ​

导入 mitmproxy/Burp 做中间人代理时,用该客户端证书与真实服务器握手:

bash
# mitmproxy 用客户端证书
mitmproxy --client-cert com.app_xxx.p12 --client-cert-password r0ysue

注意 ​

  • 同一证书可能被多次取,每次导出一份独立 p12,均可用
  • 不是所有 App 都有客户端证书,没配置的不会触发

相关文档 ​

基于 VitePress 构建 · 教学用途