如何解决“CFNetwork SSLHandshake failed (-9806)”
Posted
技术标签:
【中文标题】如何解决“CFNetwork SSLHandshake failed (-9806)”【英文标题】:How to solve "CFNetwork SSLHandshake failed (-9806)" 【发布时间】:2016-01-22 08:45:33 【问题描述】:我正在尝试修复 CFNetwork SSLHandshake failed (-9806) 警告。 我的应用程序运行良好,但是当我在设备中通过 Xcode 运行应用程序时,应用程序崩溃了。 我在 .plist 中添加了 NSAppTransportSecurity,
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourserver.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow insecure HTTP requests-->
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
还使用不同的 3g/wifi 进行了测试。
需要帮助。提前致谢。
【问题讨论】:
崩溃与 ATS 有关吗?请添加异常消息。 我正在使用 AFNetworking 。我认为崩溃是由于网络问题,与 ATS 无关,但由于堆栈溢出的一些建议,我正在使用 ATS 来防止实时崩溃 【参考方案1】:通过这个link
还可以尝试使用不同版本的 TLS,如下所示。
<key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string>
也可以通过添加到您应用的 Info.plist 来检查:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>YOUR_HOST.COM</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>1.0</string>
<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
【讨论】:
【参考方案2】:我也有同样的问题。在阅读了这篇 CFNetwork SSLHandshake failed ios 9 之后,我把它放到了 Info.plist 上,现在可以工作了:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
【讨论】:
以上是关于如何解决“CFNetwork SSLHandshake failed (-9806)”的主要内容,如果未能解决你的问题,请参考以下文章