如何使用Charles Web Proxy和Windows上的最新Android模拟器配置SSL证书?

时间:2010-10-20 10:11:43

标签: android ssl ssl-certificate webproxy charles-proxy

我想使用Charles Web代理在Windows中使用Android模拟器。我已经成功设置了查尔斯,并使用命令行启动了模拟器:

emulator -http-proxy 127.0.0.1:8888 @NexusOne

我可以看到来自Charles的Android模拟器的流量,但问题是我正在开发使用SSL的实时API,我不知道如何配置Charles让我玩数据哪个发送和接收。我知道在Charles中设置SSL的两个区域(代理 - >代理设置 - > SSL和代理 - >客户端SSL证书)但我找不到任何体面的文档让我做我做的事情想做。有没有人经历过Charles或者一般的证书,他们可以解释如何实现这一目标。也许证书的入门也很好,因为我似乎不知道为什么这么难。

8 个答案:

答案 0 :(得分:67)

要使用查尔斯远程捕获http或https流量,您需要执行以下操作:

HOST - 机器运行Charles并托管代理 客户 - 用户的机器生成您将捕获的流量

主机

  1. 安装完全许可的charles版本
  2. 代理 - >代理设置 - >选中“启用透明HTTP代理”
  3. 代理 - > SSL代理设置 - >选中“启用SSL代理”
  4. 代理 - > SSL代理设置 - >单击“添加”按钮并在两个字段中输入*
  5. 代理 - >访问控制设置 - >添加本地子网(例如:192.168.2.0/24)以授权本地网络上的所有计算机使用其他计算机上的代理
  6. 建议在查尔斯中设置“自动保存工具”,这将自动保存并旋转查尔斯日志。
  7. 客户端计算机:

    1. 安装并永久接受/信任查尔斯SSL证书
      http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
    2. 配置IE,Firefox和Chrome以使用套接字charles托管代理(例如:192.168.1.100:8888)
    3. 当我对此进行测试时,我选择了两行Facebook HTTPS聊天(其中一行是某人,另一行是FROM)

      如果您使用以下命令启动模拟器,也可以通过这种方式捕获Android模拟器流量。

      emulator -avd <avd name> -http-proxy http://local_ip:8888/
      

      其中LOCAL_IP是您计算机的IP地址,而不是127.0.0.1,因为这是模拟手机的IP地址。

      来源:http://brakertech.com/capture-https-traffic-remotely-with-charles/

答案 1 :(得分:48)

在Charles中,转到代理&gt;&gt;代理设置,然后选择SSL标签。将您的主机添加到位置列表中。

例如,如果您的安全通话转到https://secure.example.com,则可以输入secure.example.com或* .example.com。

完成上述操作后,您可能需要在查尔斯主窗口中右键单击该呼叫,然后选择SSL代理选项。

希望这有帮助。

答案 2 :(得分:25)

这里值得一提的是在Android设备上执行此操作的分步说明。对于iOS应该是相同的:

  1. Open Charles
  2. 转到代理商&gt;代理设置&gt; SSL
  3. 选中“启用SSL代理”
  4. 选择“添加位置”并输入主机名和端口(如果需要)
  5. 单击“确定”并确保选中该选项
  6. 从此处下载Charles证书:Charles cert >
  7. 通过电子邮件将该文件发送给自己。
  8. 打开设备上的电子邮件,然后选择证书
  9. 在“为证书命名”中输入您想要的任何内容
  10. 单击“确定”,您将收到证书已安装的消息
  11. 然后您应该能够在Charles中看到SSL文件。如果你想截取和更改值,你可以使用“Map Local”工具,这真的很棒:

    1. 在Charles中访问工具&gt;地图本地
    2. 选择“添加条目”
    3. 输入要替换的文件的值
    4. 在“本地路径”中,选择要加载应用的文件
    5. 点击确定
    6. 确保选中该条目,然后单击“确定”
    7. 运行您的应用
    8. 您应该在“备注”中看到您的文件加载而不是实时加载

答案 3 :(得分:23)

Charles提供HTTPS代理的方式发生了一些变化。

首先,证书安装选项已移至帮助菜单。

Help -> SSL Proxying -> Install Charles Root Certificate
Help -> SSL Proxying -> Install Charles Root Certificate in iOS Simulators

Charles SSL Proxying

其次,从iOS 9开始,您必须在NSAppTransportSecurity中提供Info.plist选项,如果您希望Charles作为中间人正常工作,您必须添加:

<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>

作为您网域的一部分,请参阅完整示例:

<key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>

原因(我猜)是Charles在中间https服务器中扮演男人后,在某些时候用清晰的http进行通信。

最后一步是在Charles中激活此域的SSL代理(右键单击域并选择启用SSL代理)

enable HTTP Proxying

答案 4 :(得分:7)

什么对我有用 - 应该真的转移到iPhone:

查尔斯

  1. 启用透明Http代理
  2. 启用SSL代理
  3. 右键单击传入请求并选择SSL代理
  4. 的Mac

    1. 下载Charles CA证书包http://www.charlesproxy.com/ssl.zip
    2. 给自己发送电子邮件charles-proxy-ssl-proxying-certificate.crt
    3. iPhone

      1. 在端口8888上为Charles启用http代理
      2. 选择并安装电子邮件附件,是的,相信它!
      3. Voila,您现在可以查看SSL代理中添加的域中的加密流量

答案 5 :(得分:6)

您还应该从Charles帮助菜单中单击“安装Charles CA SSL证书..”。请参阅http://blog.noodlewerk.com/general/tutorial-using-charles-proxy-to-debug-https-communication-between-server-and-ios-apps/

上的详细说明

答案 6 :(得分:0)

这些事对我有帮助

  1. 转到代理 - &gt; SSL代理设置 - &gt;添加
  2. 在此处添加您的网站名称,并将端口号设为8888
  3. enter image description here enter image description here

    1. 右键单击左侧面板上的站点名称,然后选择&#34;启用 SSL代理&#34; enter image description here
    2. 希望这可以帮助那些人。

答案 7 :(得分:0)

无论在何处提及,证书安装步骤都是正确的https://stackoverflow.com/a/35200795/865220

但是,如果您像我这样需要分别为每个新的URL启用SSL代理,那么要为所有主机名启用,只需在SSL代理设置中的主机名和端口名列表中输入* :

enter image description here