android - 查尔斯在浏览器上工作,但不适用于应用程序 - Android

标签 android ssl networking charles-proxy

我已经安装并一直在使用 charles proxy(4.5.6)。

我使用的是安卓 9。

Charles 在 Chrome 页面(特别是 Instagram)上工作:

Charles and Instagram on chrome

但它不适用于 Instagram 应用程序:

Charles and Insta app

当我使用该应用程序时,我总是会收到该错误。

我应该“保存查尔斯根证书”然后将其安装在我的手机上吗?另外,为什么 Charles 可以在 Chrome 上工作,但不能在 Instagram 应用上工作?

最佳答案

Instagram 的应用程序使用一种称为 SSL Certificate Pinning 的技术。 .基本上,这意味着他们将有关服务器的预期 SSL 证书的信息 bundle 到应用程序中,并拒绝任何不提供该证书的连接。由于 Charles 提供的证书不是 Instagram 的证书,因此 Instagram 应用程序拒绝连接。在 Chrome 中,它必须依赖浏览器对证书信任的评估,这将取决于设备上安装的证书 - 我假设您已经将设备设置为信任 Charles Proxy SSL 证书,所以因为 Chrome 信任它(因为您告诉它),该网站有效。曾经有a way to do key pinning in the browser ,但由于 some issues that were discovered 而不再起作用.

您可以在您的 Facebook 帐户设置中禁用此证书固定:https://www.facebook.com/whitehat/researcher-settings/

至于它们的实现细节,有numerous articles online关于如何在 Instagram 的应用程序中禁用固定。我不能特别担保其中任何一个,因为我没有尝试过它们,而且我不确定它们将如何与服务条款交互,但您可以查看这些以获取更多信息。

关于android - 查尔斯在浏览器上工作,但不适用于应用程序 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60688374/

相关文章:

android - 在 Android 中查找本地网络地址 - 包括 IP 和 NetMask? (以太网不是 wifi)

linux - EPOLLET 模式下的 Epoll 在从套接字读取之前返回 2 EPOLLIN

android - 如何使用 adb 将文件复制到可从 PC 访问的 android 目录

java - 如何将 JKS 转换为 Docker 注册表证书/ key ?

java - 使用 SSLSocket 的 SOCKS5 代理

java - 无法在 netty 中连接 ssl

linux - 如何在 Docker 容器中设置静态 IP 地址?

Java:在wi-fi路由器后面的设备中发送/接收Udp数据包

android - DevicePolicyManager、锁屏和 HTC Sense

android - Activity.finish() 方法到底在做什么?