访问设备上的本地开发环境以及 Charles 代理和 SSL?

Access local dev environment on a device and Charles Proxy and SSL?

我需要在设备上访问我的本地开发环境 (MAMP Pro)。我的非 SSL 站点可以正常工作,但我的需要 SSL 的站点无法正常工作。

我的本地开发机器和我的设备都在同一个 wifi 网络上。在设备上的 wifi 设置中,我将 HTTP 代理设置为手动,服务器是我的开发环境 IP,端口是默认的 8888(尽管如果我将其更改为 8080 它仍然有效)。

我已经在 MAMP Pro 中为 local.site1.com 设置了虚拟主机条目。 url 现在可以在我的本地开发环境和设备上使用。

如果我尝试在 https://local.site2.com 访问我的 SSL 站点,这在开发环境中有效,但设备显示此消息:

Safari cannot open the page.

错误是:"There was a problem communicating with the secure web proxy server (HTTPS).".

Charles Proxy 似乎是使用主机文件中指定的域名访问设备上的本地开发环境的标准方式,但我很乐意使用任何有效的解决方案。

当然 OSX/iOS 不喜欢你注入的证书,因为它不是来自 "trusted" 来源,它直接终止了连接。

您可以使用 Apple Configurator 将您的证书定义为来自受信任的来源。

source

编辑

  1. 打开 Apple Configurator 应用程序并创建一个新的配置文件(准备)。
  2. 在安装选项卡上禁用 "Update iOS",因为我们不想做所有这些。我们只想注入证书。
  3. 然后您进入 "Installation" 选项卡并在 "Settings" 下您 select 证书。 (由于我们不能在此 mobileconf 中包含 .pem 文件,我们必须将我们的根证书转换为 .cert 文件,并且由于它已经在钥匙串应用程序中,只需将其作为 .cert 文件导出到您可以轻松访问的地方找到它。
  4. 返回 Apple Configurator 应用程序,您 select 刚刚导出的 .cert 根证书并通过 USB 数据线将 mobileconfig 推送到您的 phone/device。 (系统会提示您接受安装,因为它是 "untrusted" 根证书,然后您将完成创建者 here 解释的步骤,以便将 .pem 证书安装到设备上.
  5. 在那里,您可以像在网络设置中设置 http 代理一样设置代理,并查看 iOS 8
  6. 上的所有 TLS 加密流量

如果使用 Charles,您还需要安装其证书:

iOS 4 及以后 在设备上,将您的 HTTP 代理设置为使用 Charles,然后浏览至 http://www.charlesproxy.com/getssl 以安装证书。

您尝试过刷新或重启吗?您可能需要重新检查将 HTTP 代理设置为手动,并重新检查您的本地开发机器和您的设备是否在同一个 wifi 网络上。另外,请确保您的 IP 正确并且代理是 运行ning.


请注意,如果您对数据请求使用 SSL

-转到代理 -> 代理设置 -> SSL -> 选中“启用 SSL”并为您的请求添加主机和端口

-您可能还想从“代理”下拉列表中禁用桌面和网络代理,以便更好地隔离您的应用流量


您可能想要关闭蜂窝数据以确保所有流量都运行通过Wi-Fi/Charles代理


然后启动 Charles 并切换到顶部的“序列”选项卡 window 以实时查看每个调用和状态,包括响应大小和持续时间。单击请求可在底部窗格中查看详细信息,包括:概述、请求、响应和摘要。

确保探索不同数据类型的选项。例如,如果您的回复是一张图片,您可以看到实际图片和尺寸。如果您的应用使用 JSON,您可以选择 JSON 树导航器,或者您可以通过右键单击顶部“序列”选项卡中的请求来“复制响应”。将结果粘贴到类似 http://www.uize.com/examples/json-prettifier.html 的内容中以获得易于阅读的输出。


在启动期间,检查这些

1.Is 您的应用程序发出合理数量的数据请求以平衡启动时间和预取,以加速“下一页”?

2.Is 是否有任何请求获取了比必要更多的数据?

3.Are 由于服务器配置或后端性能不佳导致响应时间长


在应用程序使用期间检查这些

1.Is 有一个通用的导航路径很慢并且可以从启动时预取中获益?

2.Is数据实际上来自缓存而不是发起新的数据请求?

3.Is 任何正在发送的跟踪数据(例如 Omniture、Google Analytics 或其他第三方服务),如果是,是否已正确发送? 是否有因编码错误而导致错误或重复请求的情况?

4.If 您投放视频,是否选择了正确的 encoding/format? (Charles 可以限制速度以模仿无线 phone 连接。) 图片的大小是否适合设备?

查尔斯代理人

要将 Charles Proxy 用于 SSL,您需要安装 Charles Proxy Root CA。这是因为 Charles Proxy 实际上充当 MITM,因此您可以实际查看在您的应用程序和服务器之间生成的 SSL 流量(这在跟踪问题或您想具体了解生成了多少流量时非常有用).

见: http://www.charlesproxy.com/documentation/proxying/ssl-proxying/

http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

安装 ROOT CA 后,您的应用程序和内置的 Safari 浏览器应该能够访问该站点。

另一种选择

我过去这样做的另一种方法是实际使用 dnsmasq,它是一个非常轻量级的 DNS 服务器,它将读取系统的本地 /etc/hosts 文件并转发到 [=38] 中的名称服务器=] 当它不在您的主机文件中时。

您可以通过 Macbook/laptop 上的 macports 安装 dnsmasq(windows 上的 cygwin),或者它通常是一个非常标准的分发包,您是 运行 *nix。

一旦你有了 dnsmasq 运行 然后你可以简单地通过 Settings/Wifi 设置你的设备指向你的 dnsmasq 服务器进行名称解析。只要您的站点在您的 /etc/hosts 中,并且您没有基于主机的防火墙阻止端口 53 (DNS),那么您应该没问题。

我发现自己大部分时间都在使用 dnsmasq,但当我试图真正追踪从我的应用程序中使用了多少数据时,Charles Proxy 派上了用场(对我来说,一个具体要求是该应用程序是一个一种每天需要保持在 3MB 以下使用量的信息亭,这样我们就不会收到巨额的手机账单)。