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


我需要访问我当地的开发环境(MAMP Pro)在设备上。我已经将此工作正常用于我的非SSL网站,但我无法让它适用于我需要SSL的网站。

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

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

如果我尝试访问我的SSL站点 https://local.site2.com 这适用于开发环境,但设备提供此消息:

Safari cannot open the page.

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

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


3626
2017-09-02 10:37


起源



答案:


当然,OSX / iOS不喜欢你注入的证书,因为它不是来自“可信”的来源,只是直接杀死连接。

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

资源

编辑

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

1
2017-09-06 13:15



这不起作用,但我不确定我是否做错了什么。使用Apple Configurator我在设置下创建了一个新名称,Update iOS设置为从不更新设备。在安装程序ive下添加了我的localhost正在使用的证书。返回设置我已将配置文件安装到我的设备(通过USB连接)。我看不到我的设备有任何差异,页面仍然没有加载。 - Evans
请参阅编辑,其中包含相关步骤的详细信息。 - Pat


答案:


当然,OSX / iOS不喜欢你注入的证书,因为它不是来自“可信”的来源,只是直接杀死连接。

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

资源

编辑

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

1
2017-09-06 13:15



这不起作用,但我不确定我是否做错了什么。使用Apple Configurator我在设置下创建了一个新名称,Update iOS设置为从不更新设备。在安装程序ive下添加了我的localhost正在使用的证书。返回设置我已将配置文件安装到我的设备(通过USB连接)。我看不到我的设备有任何差异,页面仍然没有加载。 - Evans
请参阅编辑,其中包含相关步骤的详细信息。 - Pat


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


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

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

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


您可能希望关闭蜂窝数据以确保所有流量都通过Wi-Fi / Charles Proxy运行


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

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


在发射期间,检查这些

1.您的应用程序是否在制定合理数量的数据请求以平衡启动时间和预取,以加快“下一页”的速度?

2.是否有任何请求获取的数据超过必要数量?

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


在使用APP期间检查这些

1.有一个共同的导航路径很慢,可以从发射前的预取中受益吗?

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

3.是否发送了任何跟踪数据(例如Omniture,Google Analytics或其他第三方服务),如果是这样,是否正确发送? 由于编码错误,是否有任何错误或重复的请求?

4.如果您提供视频,是否选择了正确的编码/格式? (Charles可以限制速度以模仿无线电话连接。) 图像是否适合设备尺寸?


7
2017-09-09 01:30





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

iOS 4及更高版本 在设备上,将HTTP代理设置为使用Charles,然后浏览到 http://www.charlesproxy.com/getssl 安装证书。


4
2017-09-08 00:11



我已经安装了证书,但Safari仍然无法打开页面。 - Evans


查尔斯代理

要将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文件,并且当它不在时,也转发到resolv.conf中的名称服务器您的主机文件。

您可以通过Macbook /笔记本电脑上的macports安装dnsmasq(Windows上的cygwin),或者它通常是运行* nix的非常标准的发行包。

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

我发现自己大部分时间都在使用dnsmasq,但当我试图真正追踪我的应用程序中使用了多少数据时,Charles Proxy非常有用(我的特定要求是应用程序是一种需要的自助服务终端每天保持3MB以下的使用量,因此我们没有获得巨额手机费用)。


2
2017-09-09 21:52