iOS应用SSL握手失败

40

我正在制作一个应用程序,通过POST方法传递登录凭证来登录HTTPS aspx网站。在使用Charles代理检查响应时,我可以看到来自seal.verisign.com的SSL握手失败错误,然后被带回到登录页面。我不知道应该怎么做才能解决这个问题。

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

我无法访问服务器实现。

有什么建议吗?

谢谢!

8个回答

155

在 iOS>=10.3 版本中,按照 @ashish-verma 的优秀回答安装 Charles Proxy 证书后,您还需要通过 设置 -> 通用 -> 关于本机 -> 证书信任设置 来启用它:

启用 iOS 10.3 及以上版本的 SSL 根证书

完整设置请参考这里:http://www.devsbedevin.net/debugging-ios-ssl-traffic/


18
如果安装证书仍无法解决问题,那么可能是由于SSL Pinning。
来自charlesproxy.com:
注意,一些应用程序实施SSL证书固定,这意味着它们会验证根证书。因为应用程序本身正在验证根证书,所以它不会接受Charles的证书并且会拒绝连接。如果您已经成功安装了Charles的根SSL证书,并且可以在Safari中使用SSL代理浏览SSL网站,但某个应用程序失败了,则可能是SSL Pinning成了问题

有没有办法解决使用Charles代理时的SSL pinning问题? - tingason
@tingason 使用Android,并修补应用程序以禁用SSL Pinning,或修补iOS应用程序并重新签名。 - Amir Khorsandi
1
@tingason 适用于 iOS:越狱的 iPhone,然后使用 iOS SSL Kill Switch;或者是根据 Xposed 框架使用 JustTrustMe 或 Android-SSL-TrustKiller 的 Android 手机。详细说明请查看我的帖子 - crifan

15
也许在实际设备上测试会更有见解?
在Charles中进行以下操作:
  1. 进入代理:代理设置…
  2. 代理选项卡:在HTTP代理端口字段中输入“8888”
  3. SSL选项卡:确保“启用SSL代理”已打开
在您的开发机器上:
  1. 进入系统偏好设置:网络:Wifi:高级:TCP/IP选项卡:记下IPV4地址(即10.0.1.101)
在您的iDevice上:
  1. 从设备转到http://charlesproxy.com/charles.crt并下载Charles SSL证书
  2. 将证书标记为可信任(确保完成后禁用或删除它)
  3. 打开“设置”应用程序:Wifi:选择你的网络的详细披露按钮(圆形蓝色带白色箭头的按钮)
  4. 在HTTP代理下,选择“手动”
  5. 输入第一步(开发机器1.)中的地址到服务器字段,以及第二步(charles 2.)中的端口号。
最后:
  1. 重新启动Charles
  2. 在您的iDevice上运行Safari进行测试,这应该会提示Charles显示一个对话框以允许或拒绝SSL代理。显然要允许,然后您就可以开始了。
有关Charles的更多信息,请访问其网站:http://www.charlesproxy.com/documentation/proxying/ssl-proxying/ 另外,您是否收到连接的响应:(NSURLConnection*)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge*)challenge 方法?

1
“在您的iDevice上”步骤1是我之前不知道的,肯定为我节省了几个小时。谢谢。 - dezinezync
重启Charles对我有用,就像在这条评论中提到的一样,因为我得到了新的证书(旧的已过期)。你可能需要重置你的Charles证书。谢谢。 - j.rmz87

3

你需要安装SSL证书来解决这个问题。

按照以下步骤进行操作:

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

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

  3. 安装 SSL 证书
  4. 重新启动 Charles Proxy

1
可能是服务器对你使用的url没有有效证书。你有检查过吗?
如果你使用浏览器尝试该url,是否会出现警告?

0

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


0

您需要在移动设备上安装SSL证书。

在网上搜索如何为Charles代理安装SSL证书。


1
请注意,在这里不允许公开自我推销。建议您将博客链接从答案中删除。它们只允许出现在您的个人资料页面上。 - S.L. Barth

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接