Charles Proxy网站评论说:
请注意,一些应用程序实现了SSL证书固定,这意味着它们专门验证根证书。由于应用程序本身正在验证根证书,因此它不会接受Charles的证书,并且连接将失败。如果您已经成功安装了Charles root SSL证书,并且可以在Safari中使用SSL代理浏览SSL网站,但应用程序失败了,那么SSL锁定可能是问题所在。
只是为了确认一下,即使移动应用程序使用SSL证书锁定,也可以使用像Charles Proxy这样的HTTP监视器(或其他监视器)吗?
发布于 2018-10-23 22:18:38
正如Steffen所说,您可能需要修补应用程序以禁用证书锁定。大多数移动应用程序都不使用它:)因此,您只需要使用自签名证书启用SSL连接即可。要允许Android应用程序这样做,请执行以下操作。第一个Download apktool。然后解压APK文件(根据apktool 2.4.1):
java -jar apktool.jar d app.apk通过将此属性添加到application元素来修改AndroidManifest.xml:
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。更多信息:Network security configuration。
发布于 2018-10-18 03:54:54
证书锁定意味着应用程序显式地想要获取原始证书。
当然,您的HTTP监控应用程序必须支持指定固定证书。在我看来Charles Proxy不支持这一点。但mitmproxy支持为特定域名提供固定证书。
如果您不能访问预期的证书和匹配的密钥,那么您就不能将预期的证书提供给应用程序。然后,唯一的希望是通过黑客攻击代码来以某种方式禁用应用程序本身的锁定。使用你最喜欢的搜索引擎,搜索“绕过安卓”或类似的,以获得各种不平凡的方式,如何让应用程序相信它得到了预期的证书。
https://stackoverflow.com/questions/52862256
复制相似问题