ios - CFNetwork SSLHandshake 在 iOS 8.1 中失败 (-9805)

标签 ios xcode swift ssl nsurlconnection

我正在尝试使用 Alamofire(一个用于网络的 Swift 库,https://github.com/Alamofire/Alamofire)将 HTTP POST 发送到服务器,并且在执行 HTTP POST 时出现以下错误:

2015-01-05 19:37:07.137 PIPiOS[1021:26574] CFNetwork SSLHandshake failed (-9805) 2015-01-05 19:37:07.540 PIPiOS[1021:26574] CFNetwork SSLHandshake failed (-9805) 2015-01-05 19:37:07.942 PIPiOS[1021:26574] CFNetwork SSLHandshake failed (-9805) 2015-01-05 19:37:07.943 PIPiOS[1021:26574] NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9805) <NSMutableURLRequest: 0x7f99425177c0> { URL: https://kmis.brookes.ac.uk/csms/w_secure.login } nil Optional(Error Domain=NSURLErrorDomain Code=-1200 "The operation couldn’t be completed. (NSURLErrorDomain error -1200.)" UserInfo=0x7f9944859110 {NSErrorFailingURLStringKey=https://kmis.brookes.ac.uk/csms/w_secure.login, NSErrorFailingURLKey=https://kmis.brookes.ac.uk/csms/w_secure.login, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9805, NSUnderlyingError=0x7f994259f3c0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1200.)"}) 2015-01-05 19:38:25.115 Oxford Brookes[1021:27197] Terminating since there is no system app.

我之前使用 SwiftHTTP 库时遇到了同样的错误。 HTTP POST 通过 Java 和 PHP 工作正常,所以我知道服务器没有任何问题。知道为什么会这样吗?

PS:我在针对 iOS 8.1 的 iOS 模拟器上进行测试,是的,我已经检查过日期/时间,没问题

最佳答案

服务器的配置有问题。它不支持常见且最兼容的 SSLv23 握手,但仅支持显式 TLSv1 和 SSLv3 握手。浏览器通过尝试不同的握手来解决此类问题,但其他应用程序不会执行此类解决方法。你可以看看 SSLLabs查看此服务器的配置有多糟糕。

我不是 Apple 开发人员,但根据文档,我猜您需要使用 SSLSetProtocolVersion* 函数来强制执行 TLS1.0 或 SSL3.0 连接。

关于ios - CFNetwork SSLHandshake 在 iOS 8.1 中失败 (-9805),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27781318/

相关文章:

swift - 我在 XCode 上重构 Storyboard时丢失了一些工作?我能做些什么?

ios - 根据另一个数组的顺序对数组进行高效排序

ios - xcode/ios : HIG: Is it better practice to have cancel and done or just back (with automatic save)

ios - 为什么 @noescape 在需要时不自动应用于 Swift 闭包?

iphone - 解码字符串时获取垃圾和特殊字符

ios - 核心数据: How to check if data is in consecutive dates?

javascript - React-native IOS MapView 覆盖不显示

ios - Not Verified Enterprise Developer 消息在 iOS 9 中再次出现

ios - 使用Swift Package Manager时如何导入包的依赖关系?

xcode - 带有静态共享库的 Kiwi 和 CocoaPods