【问题标题】:How to handle "CFNetwork SSLHandshake failed" in iOS如何在 iOS 中处理“CFNetwork SSLHandshake failed”
【发布时间】:2013-11-24 05:17:45
【问题描述】:

有时我的代码中会出现CFNetwork SSLHandshake failed -(9806),但我不确定为什么会发生这种情况,因为我的代码运行流畅,除非我在 iOS 6 中运行它,然后在 iOS 7 64 位上运行它这个警告。
任何人都可以建议我,如何处理这个问题?

【问题讨论】:

  • 请停止大量编辑问题。当您对旧问题执行此操作时,您所做的就是将它们撞到时间线的顶部。这很糟糕,因为新问题被下推。
  • @Fogmeister 前 100 个活跃的 iOS 问题中有 31 个由 Arun_k 提供
  • @Fogmeister 我不知道这件事,谢谢你的信息
  • 我从您的标签中假设,这是在使用 NSURLConnection 时。您能否在问题中指定这一点,以及您在代码中的哪个位置看到此错误?
  • 对不起@MikeAbdullah,我在之前的项目中遇到了这个问题,目前我不在那家公司工作,我真的不记得那部分代码,因为有 6-7 个请求我们在应用程序启动时触发。

标签: ios nsurlconnection cfnetwork


【解决方案1】:

另一种解决方案:检查手机中的日期/时间是否设置正确。 SSL 证书在特定日期之前有效。

https://superuser.com/a/760211

【讨论】:

    【解决方案2】:

    这也可能是由于 iOS 9 造成的。iOS 9 和 OSX 10.11 要求您计划从其请求数据的所有主机都使用 TLSv1.2 SSL,除非您在应用的 Info.plist 文件中指定异常域。

    您可以在此处找到更多信息: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/

    或者 Steven Peterson 在这里的回答,这很清楚: https://stackoverflow.com/a/30720929/1485701

    【讨论】:

    • 很好的建议。还要添加一件事,这在 Steven Peterson 的回答中没有描述,这是有针对性的。 NSTemporaryExceptionRequiresForwardSecrecy 的默认值为 true,因此您的服务器也应该启用它(建议修复一些漏洞),或者您应该在 iOS 应用中明确将其设置为 false(不推荐)。
    【解决方案3】:

    遇到同样的问题,在我确认服务器正在获取 POST 后,解决方案是这样的:

    • 清理项目:产品 -> 清理
    • 从 iOS 设备/iOS 模拟器中删除您的应用并退出模拟器
    • 编译您的应用并运行它

    就我而言,就这么简单。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,就我而言,解决方案是在我的代码中编写

      initWithScheme:@"https"
      

      而不是

      initWithScheme:@"http"
      

      所以请确保您使用正确的协议

      【讨论】:

      • 这不是我的问题,因为我使用的所有 WS 都只是 HTTPS
      • 但是,如果您需要通过 https 使用数据会怎样?
      【解决方案5】:

      通常当我收到 CFNetwork SSLHandshake failed -(*) 时,这是因为我的本地 wifi 网络(设备已连接到网络但不是互联网)

      在另一个网络上再试一次(3G 对我来说是最快的解决方案)

      【讨论】:

      • 但是有什么办法可以解决这个问题,这样我的应用就不会崩溃了。
      • @JoshK 你能把这部分的一些实现吗?
      • 这不会让您的应用崩溃。这些只是警告。确保您对所有请求都有很强的可达性。 ZCheers
      猜你喜欢
      • 1970-01-01
      • 2015-08-23
      • 2017-01-04
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 2014-11-12
      相关资源
      最近更新 更多