ssl - 使用 SSL Pinning 的 Charles Proxy for Mobile 应用程序
问题描述
Charles Proxy 网站评论说:
请注意,某些应用程序实施 SSL 证书固定,这意味着它们专门验证根证书。因为应用程序本身正在验证根证书,所以它不会接受 Charles 的证书并且连接会失败。如果您已成功安装 Charles 根 SSL 证书并且可以在 Safari 中使用 SSL 代理浏览 SSL 网站,但应用程序失败,则可能是 SSL Pinning 问题。
可以肯定的是,即使移动应用程序使用 SSL 证书固定,是否也可以使用像 Charles Proxy(或其他监视器)这样的 HTTP 监视器?
解决方案
正如 Steffen 所说,您可能需要修补应用程序以禁用证书固定。大多数移动应用程序不使用它:) 因此,您只需要使用自签名证书启用 SSL 连接。要允许使用 Android 应用程序执行以下操作。首先下载 apktool。然后解压APK文件(根据apktool 2.4.1):
java -jar apktool.jar d app.apk
AndroidManifest.xml
通过将此属性添加到application
元素进行修改:
android:networkSecurityConfig="@xml/network_security_config"
创建res/xml/network_security_config.xml
具有以下内容的文件:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>
生成用于签署 APK 的密钥:
keytool -genkey -alias keys -keystore keys -keyalg DSA
构建已修补的 APK:
java -jar apktool.jar b app -o app_patched.apk --use-aapt2
签署APK文件:
jarsigner -verbose -keystore keys app_patched.apk keys
如有必要,将 APK 转换为 JAR 以进行进一步分析:d2j-dex2jar.sh app.apk
. 更多信息:网络安全配置。
推荐阅读
- reactjs - 酶装载不调用 useEffect;react-testing-library 渲染不调用 useEffect
- python - Pycharm 调试器已连接但不会在断点处停止
- haskell - 智能构造函数类型可以有多个有效的 Functor 实例吗?
- ios - Problems Updating View with Swift 5
- python - 如何加快python后端发出大量http请求
- delphi - 奇怪的德尔福行为
- javascript - (0 , _axios.default) 在使用拦截器模拟 axios 时不是函数
- typescript - Deno:找不到模块“https://deno.land/x/fiona”
- sql - ORA-06512 创建触发器时
- ios - iPhone 11 模拟器上的背景图片大小不合适