39

我正在制作一个应用程序,通过在 post 方法中传递登录凭据来通过 HTTPS 登录到 aspx 网站。使用 Charles Proxy 检查响应时,我可以看到来自 seal.verisign.com 的 SSL Handshake failed 错误,然后我被带回登录页面。我不确定我需要做什么来解决这个问题。

我正在 iPhone 模拟器中对此进行测试。

我无权访问服务器实现。

有任何想法吗?

谢谢!

4

8 回答 8

150

在 iOS >= 10.3 上,安装 Charles Proxy 证书后(根据 @ashish-verma 的出色回答),您还需要通过Settings -> General -> About -> Certificate Trust Settings启用它:

在 iOS 10.3 及更高版本上启用 SSL 根证书

此处的完整设置:http: //www.devsbedevin.net/debugging-ios-ssl-traffic/

于 2017-05-08T13:53:59.260 回答
18

如果安装证书仍然对您没有帮助,则可能是由于 SSL Pinning。

来自 charlesproxy.com:

SSL Pinning 请注意,某些应用程序实施 SSL 证书锁定,这意味着它们专门验证根证书。因为应用程序本身正在验证根证书,所以它不会接受 Charles 的证书并且连接会失败。如果您已成功安装 Charles 根 SSL 证书,并且可以在 Safari 中使用 SSL 代理浏览 SSL 网站,但应用程序失败,则可能是 SSL Pinning 问题

于 2017-05-03T23:48:02.530 回答
14

也许在实际设备上进行测试会提供更多洞察力?

在查尔斯做到这一点:

  1. 转到代理:代理设置...
  2. 代理选项卡:在 HTTP 代理端口:字段中输入“8888”
  3. SSL 选项卡:确保“启用 SSL 代理”已打开

在您的开发机器上:

  1. 转到系统偏好设置:网络:Wifi:高级:TCP/IP 选项卡:记下 IPV4 地址:(即 10.0.1.101)

在您的设备上:

  1. 从您的设备转到http://charlesproxy.com/charles.crt并下载 Charles SSL 证书
  2. 好的证书是受信任的(完成后请务必禁用或删除它)
  3. 转到设置应用程序: Wifi:为您的网络选择详细的披露按钮(带有白色箭头的蓝色圆形按钮)
  4. 在 HTTP 代理下,选择“手动”
  5. 在“服务器”字段中输入步骤(开发机器 1.)中的地址,以及步骤(查尔斯 2.)中的端口号

最后:

  1. 重启查尔斯
  2. 在您的 iDevice 上运行 Safari 进行测试。这应该会提示 Charles 显示一个对话框来允许或拒绝 SSL 代理。显然允许,你应该很高兴。

查尔斯网站上的更多信息:http: //www.charlesproxy.com/documentation/proxying/ssl-proxying/

另外,您是否收到对 connection:(NSURLConnection*)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge*)challenge 方法的响应?

于 2013-04-22T22:42:21.183 回答
3

您需要安装 SSL 证书才能解决此问题。

按着这些次序

  1. 在iOS模拟器上打开Safari浏览器

  2. 在地址栏中输入“ www.charlesproxy.com/getssl”

  3. 安装SSL证书
  4. 重启Charles 代理
于 2016-12-27T14:00:53.587 回答
1

服务器可能没有您正在使用的 url 的有效证书。你检查了吗?

如果您使用浏览器尝试该 url,它会给您一个警告吗?

于 2013-04-02T15:42:42.877 回答
0

如果在模拟器上运行,只需重启 Charles Proxy 和模拟器,确保 Charles Proxy 先启动

于 2020-02-26T14:22:05.620 回答
0

删除所有旧用户凭据,然后重新安装新的 ssl 证书。

于 2017-07-13T05:36:09.473 回答
0

您必须在移动设备上安装 SSL 证书。

在线搜索如何为 Charles Proxy 安装 SSL 证书。

于 2016-10-29T03:04:19.137 回答