首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Charles Proxy for Mobile apps that use SSL Pinning

Charles Proxy for Mobile apps that use SSL Pinning
EN

Stack Overflow用户
提问于 2018-10-18 03:26:30
回答 2查看 10.9K关注 0票数 11

Charles Proxy网站评论说:

请注意,一些应用程序实现了SSL证书固定,这意味着它们专门验证根证书。由于应用程序本身正在验证根证书,因此它不会接受Charles的证书,并且连接将失败。如果您已经成功安装了Charles root SSL证书,并且可以在Safari中使用SSL代理浏览SSL网站,但应用程序失败了,那么SSL锁定可能是问题所在。

只是为了确认一下,即使移动应用程序使用SSL证书锁定,也可以使用像Charles Proxy这样的HTTP监视器(或其他监视器)吗?

EN

回答 2

Stack Overflow用户

发布于 2018-10-23 22:18:38

正如Steffen所说,您可能需要修补应用程序以禁用证书锁定。大多数移动应用程序都不使用它:)因此,您只需要使用自签名证书启用SSL连接即可。要允许Android应用程序这样做,请执行以下操作。第一个Download apktool。然后解压APK文件(根据apktool 2.4.1):

代码语言:javascript
复制
java -jar apktool.jar d app.apk

通过将此属性添加到application元素来修改AndroidManifest.xml

代码语言:javascript
复制
android:networkSecurityConfig="@xml/network_security_config"

创建包含以下内容的文件res/xml/network_security_config.xml

代码语言:javascript
复制
<?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的密钥:

代码语言:javascript
复制
keytool -genkey -alias keys -keystore keys -keyalg DSA

构建打补丁的APK:

代码语言:javascript
复制
java -jar apktool.jar b app -o app_patched.apk --use-aapt2

签名APK文件:

代码语言:javascript
复制
jarsigner -verbose -keystore keys app_patched.apk keys

如有必要,请将APK转换为JAR进行进一步分析:d2j-dex2jar.sh app.apk。更多信息:Network security configuration

票数 12
EN

Stack Overflow用户

发布于 2018-10-18 03:54:54

证书锁定意味着应用程序显式地想要获取原始证书。

当然,您的HTTP监控应用程序必须支持指定固定证书。在我看来Charles Proxy不支持这一点。但mitmproxy支持为特定域名提供固定证书。

如果您不能访问预期的证书和匹配的密钥,那么您就不能将预期的证书提供给应用程序。然后,唯一的希望是通过黑客攻击代码来以某种方式禁用应用程序本身的锁定。使用你最喜欢的搜索引擎,搜索“绕过安卓”或类似的,以获得各种不平凡的方式,如何让应用程序相信它得到了预期的证书。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52862256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档