SSL代理/查尔斯和Android的麻烦

bia*_*nca 59 proxy android charles-proxy

我想使用Charles代理工具测试Android设备的Https调用.我需要查看调试应用程序的原始请求/响应内容.我通过在"代理设置" - > SSL选项卡下添加主机和端口来配置Charles.当我运行应用程序时,所有SSL调用似乎都会从Charles快速消失.有没有人知道如何解决这个问题.Charles文档似乎没有Android设备的信息.

DàC*_*hún 71

对于Android7

请参阅: 如何使用Android 7 nougat获取charles代理工作?

适用于Android7以下的Android版本

从您的计算机上运行Charles:

  1. 打开代理设置:代理 - >代理设置,代理选项卡,选中"启用透明HTTP代理",并记住"端口". 在此输入图像描述

  2. SSL代理设置:代理 - > SSL代理设置,SSL代理选项卡,选中"启用SSL代理",然后添加.到地点: 在此输入图像描述 在此输入图像描述

  3. 打开访问控制设置:代理 - >访问控制设置.添加本地子网以授权本地网络上的计算机以使用其他计算机/移动设备上的代理. 在此输入图像描述

在Android手机中:

  1. 配置您的手机:转到设置 - >无线和网络 - > WiFi - >连接或修改您的网络,填写计算机IP地址和端口(8888): 在此输入图像描述

  2. 获取Charles SSL证书.从您的移动浏览器访问此网址:http: //charlesproxy.com/getssl 在此输入图像描述

  3. 在"命名证书"中输入您想要的任何内容

  4. 接受安全警告并安装证书.如果你成功安装它,那么你可能会看到这样的:在手机中,设置 - >安全 - >可信凭证: 在此输入图像描述

完成.

然后你可以对你的手机进行一些测试,加密的https请求将显示在Charles: 在此输入图像描述

  • 在 Android 6.0 chrome 浏览器上,当我访问 http://charlesproxy.com/getssl 时,它显示静态页面“Charles SSL CA 证书安装...”并且没有开始证书下载。请澄清这种情况下需要做什么? (4认同)
  • 我正在使用 Charles 4.1.3,在“帮助”菜单中,它告诉我“配置您的设备以在 10.72.xx.xx:8888 上使用 Charles 作为其 HTTP 代理,然后浏览到 chls.pro/ssl 以下载并安装证书。` 它适用于我的 iPhone,但不适用于 Android。在我的 Android 中,我访问旧网址 `charlesproxy.com/getssl` 有效。 (3认同)

bku*_*ius 43

编辑 - 这个答案是针对Charles的早期版本.请参阅下面的@ semicircle21答案,了解v3.10.x的正确步骤 - 比这种方法更容易...... :-)

这里值得一提的是逐步说明.它们也应该在iOS中同样适用:

  1. 打开查尔斯
  2. 转到代理>代理设置> SSL
  3. 选中"启用SSL代理"
  4. 选择"添加位置"并输入主机名和端口(如果需要)
  5. 单击"确定"并确保选中该选项
  6. 从这里下载Charles证书:Charles cert>
  7. 通过电子邮件将该文件发送给自己.
  8. 打开设备上的电子邮件,然后选择证书
  9. 在"命名证书"中输入您想要的任何内容
  10. 单击"确定",您将收到证书已安装的消息

然后,您应该能够在Charles中看到SSL文件.如果要拦截和更改值,可以使用"Map Local"工具,这非常棒:

  1. 在Charles中,转到工具>地图本地
  2. 选择"添加条目"
  3. 输入要替换的文件的值
  4. 在"本地路径"中,选择要加载应用程序的文件
  5. 单击确定
  6. 确保选中该条目,然后单击"确定"
  7. 运行你的应用程序
  8. 您应该在"Notes"中看到您的文件加载而不是活动文件

  • 第 4 步有点棘手。如果您想允许所有主机,则不要在那里添加任何内容!我正在尝试使用“\*”和“\*.\*”并收到“证书文件不存在”错误。将位置部分留空为我解决了。 (3认同)

sem*_*e21 27

感谢@ bkurzius的回答,此更新适用于Charles 3.10+.(原因在这里)

  1. 打开查尔斯
  2. 转到代理> SSL代理设置...
  3. 选中"启用SSL代理"
  4. 选择"添加位置"并输入主机名和端口(如果需要)
  5. 单击"确定"并确保选中该选项
  6. 转到帮助> SSL代理> Install Charles Root Certificate on a Mobile Device or Remote Browser...,然后按照说明操作.(使用Android的浏览器下载并安装证书.)
  7. 在"命名证书"中输入您想要的任何内容
  8. 单击"确定",您将收到证书已安装的消息


Kar*_*ran 8

我浪费了 1 天的时间才发现这个问题,我的系统没有询问连接“允许”或“拒绝”。我认为这是由于某些证书问题造成的。尝试了上面提到的所有方法,但没有一个起作用。最后我发现“防火墙才是真正的罪魁祸首”。如果防火墙设置为ON,他们将不允许charles通过代理IP连接到您的笔记本电脑。把它们关掉,一切都会顺利进行。不确定这是否是相关答案,但只是想分享。


bia*_*nca 2

我想到了这个问题。这是因为 Charles 3.7 对于 Android 设备存在一些错误。我更新到 Charles 3.8 Beta 版本,似乎对我来说工作得很好。