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

Mar*_*tyn 60 ssl android ssl-certificate webproxy charles-proxy

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

emulator -http-proxy 127.0.0.1:8888 @NexusOne
Run Code Online (Sandbox Code Playgroud)

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

bra*_*ech 70

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

主机 - 机器运行查尔斯并托管代理客户端 - 用户的机器生成您将捕获的流量

主机

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

客户端机器:

  1. 安装并永久接受/信任charles SSL证书
    http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
  2. 配置IE,Firefox和Chrome使用套接字charles托管代理(例如:192.168.1.100:8888)

当我测试这个时,我选择了两行Facebook HTTPS聊天(一个是某人的线路,另一个是FROM)

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

emulator -avd <avd name> -http-proxy http://local_ip:8888/
Run Code Online (Sandbox Code Playgroud)

其中LOCAL_IP是您计算机的IP地址,而不是127.0.0.1,因为它是模拟电话的IP地址.

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

  • 我的Charles代理版本中没有SSL选项卡...(v4) (4认同)
  • 找到了解决方案:http://codeblog.shape.dk/blog/2014/01/06/custom-ssl-certificate-with-charles-web-proxy/ (2认同)

小智 49

在Charles中,转到代理>>代理设置,然后选择SSL选项卡.将您的主机添加到位置列表中.

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

完成上述操作后,您可能需要在主Charles窗口中右键单击该呼叫,然后选择SSL Proxying选项.

希望这可以帮助.

  • 我没有在代理设置中看到任何SSL选项卡 (11认同)
  • 2017:不要忘记安装Charles SSL证书:CharlesProxy.com/getssl (5认同)
  • 这些说明是旧的/不正确的。正确的方法是“代理”&gt;“SSL 代理设置...”。确认 v4.2.7。苹果系统。适用于评估版。 (3认同)
  • @salonMonsters 由于某种原因,该网站不会在我的 Android 模拟器上执行任何操作...只是说如果操作系统配置为允许证书,它就会执行此操作 (2认同)
  • @Hlung你应该直接在Proxy菜单下看到它作为"SSL代理设置" (2认同)

bku*_*ius 25

这里值得一提的是在Android设备中执行此操作的分步说明.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"中看到您的文件加载而不是活动文件

  • 对于旧版本的Charles来说,这是陈旧的文档 (3认同)

apo*_*che 23

事情在Charles提供HTTPS代理方面发生了一些变化.

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

Help -> SSL Proxying -> Install Charles Root Certificate
Help -> SSL Proxying -> Install Charles Root Certificate in iOS Simulators
Run Code Online (Sandbox Code Playgroud)

Charles SSL Proxying

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

<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

原因是(我猜)查尔斯在某些时候以中间https服务器中的人作为清晰的http进行通信.

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

启用HTTP代理


小智 7

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

查尔斯

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

苹果电脑

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

苹果手机

  1. 在端口8888上为Charles启用http代理
  2. 选择并安装电子邮件附件,是的,相信它!

现在,您可以查看SSL代理中添加的域中的加密流量


Vin*_*tia 6

您还应该从Charles Help菜单中单击"Install Charles CA SSL Certificates ..".有关详细说明,请访问http://blog.noodlewerk.com/general/tutorial-using-charles-proxy-to-debug-https-communication-between-server-and-ios-apps/