48

I have Android 4.3 forced to use Charles proxy via IPTABLES. The charles certificate is installed on the phone. I am able to capture normal SSL traffic like https websites in the browser. All POST and GET methods seem to work fine. In a particular app, it fails when using the SSL CONNECT method.

  • URL: https://XX.XX.XXX.XXX/
  • Status: Failed
  • Failure: SSLHandshake: Received fatal alert: unknown_ca
  • Response Code: - Protocol: HTTP/1.0
  • Method: CONNECT
4

10 回答 10

57

从 iOS 10.3 开始,您还需要转到设置 > 常规 > 关于 > 证书信任设置并信任 Charles 证书。

在此处输入图像描述

于 2017-06-21T09:46:52.567 回答
20

您可能会在 Facebook 或 Instagram 等应用程序中遇到此问题。Charles 证书不适用于某些新应用程序,因为它们使用了一种名为 SSL-PINNING 的技术。首先,您必须打破应用程序的 ssl 固定系统,或者您可以安装旧版本的应用程序,然后它有时可以工作,但我们需要一个关于 ssl 固定的新解决方案,以便记录此类应用程序的流量。

于 2016-08-02T14:46:47.333 回答
16

正如@Berkay Yıldız 所说,它可能使用 ssl/certificate pinning。

如何修复/避免/禁用 ssl pinning?

整个逻辑是:

LEVEL 1:for normal http:核心逻辑:</p>

  • 电脑:Mac/Windows
    • 查尔斯设置http代理
    • 设置端口
  • 应用使用 Charles 代理
    • 在 Wifi 里面,设置
      • 主机IP
      • 港口

注意:电脑端,必须使用wired network不能无线,否则手机端网络不可用

2级:为encrypted https:</p>

  • 个人电脑
    • 安装查尔斯根证书
      • Mac:用于Key Chain信任Charles Root CA
    • 查尔斯
      • Enable SSL Proxying
        • 为您的特定 api 地址设置位置过滤器
  • 电话
    • 应用程序
      • 安装查尔斯根 CA
        • 注:类型应选择:VPN and Application
          • 不选择:WLAN
        • 确保证书安装成功
          • Trusted Credentials -> User,可以看到安装的Charles证书

第 3 级:对于 SPECIALhttps使用ssl pinning

  • 电话:
    • 确保root或越狱
      • Android:已root
        • 供以后安装工具:Xposed
      • iOS:已越狱
        • 供以后安装工具:Cydia
    • 然后安装插件/工具,能够避免/禁用 ssl pinning

更详细的总结请参考我的帖子(中文写的):12

于 2018-09-11T13:35:31.157 回答
9

有些人最终在这里使用 android N 设备,即使在安装证书后也不会通过 charles 执行 SSL - 现在在http://chls.pro/ssl

在 N - 您还需要添加一个 xml 文件和安全配置。这篇文章详细介绍了:如何让 charles 代理与 Android 7 nougat 一起工作?

于 2016-11-22T16:07:51.110 回答
6

我遇到了同样的问题。并且安装最新的证书后,就解决了。 在此处输入图像描述

于 2016-06-03T14:35:52.763 回答
5

在您的手机上,访问http://charlesproxy.com/getssl以下载证书。在 android 中下载证书后,它会提示您安装证书,为证书命名并继续。它现在应该可以工作了。

注意:在 iPhone 上应该类似

于 2016-11-14T10:06:58.153 回答
0

在此链接http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/上,您拥有正确安装 Charles 证书所需的所有信息。

安装后,您将摆脱“SSLHandshake:收到致命警报:unknown_ca”错误。

于 2015-03-24T09:08:55.177 回答
0

如果您在 Android 手机上使用 facebook 登录的应用程序获得此功能,我通过卸载 fb 应用程序解决了这个问题。然后使用移动 fb 网络代替,我可以查尔斯一切。安装了 fb 应用程序后,fb api 因 SSL 错误而失败。

于 2019-01-07T11:40:25.783 回答
0

当我尝试在我的 Nexus 6p、Android 6.0 上安装证书时出现以下错误。(我按照 charles 中的说明通过http://chls.pro/ssl下载了证书。):

无法安装,因为无法读取证书文件。

此问题的解决方案是通过以下方式安装: Settings> Security>Install from storage 导航到证书文件并安装后,一切都按预期工作。

于 2017-12-08T07:28:54.880 回答
-3

我在 Android 8.1 上使用 Charles 4.2.5 和 Nexus 6P。

无法使用 Charles 在我的手机上跟踪 https。

请注意,在Android N之后,我们无法捕获其他应用程序的正常SSL流量。

这是查尔斯的官方网站。 https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

Android 从 Android N 开始,您需要为您的应用添加配置,以使其信任由 Charles SSL Proxying 生成的 SSL 证书。这意味着您只能将 SSL 代理与您控制的应用程序一起使用。

为了将您的应用程序配置为信任 Charles,您需要将网络安全配置文件添加到您的应用程序。该文件可以覆盖系统默认值,使您的应用程序能够信任用户安装的 CA 证书(例如 Charles Root 证书)。您可以指定这仅适用于应用程序的调试版本,以便生产版本使用默认信任配置文件。

将文件 res/xml/network_security_config.xml 添加到您的应用程序:

然后在您的应用清单中添加对此文件的引用,如下所示:

...

于 2018-05-04T07:15:21.737 回答