ios - CFNetwork SSLHandshake iOS 9 失败

标签 ios ssl nsurlconnection ios9

使用 iOS 9 beta 1 的人遇到过这个问题吗?

我使用标准 NSURLConnection 连接到网络服务,一旦调用网络服务,我就会收到以下错误。这目前在 iOS 8.3 中有效

可能是测试版错误?任何想法或想法都会很棒!我在 iOS 9 开发的早期就知道了

这是完整的错误:

CFNetwork SSLHandshake failed (-9824) NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)

 NSURLRequest * urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://mywebserviceurl"]];
        NSURLResponse * response = nil;
        NSError * error = nil;
        NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest
                                                  returningResponse:&response
                                                              error:&error];

最佳答案

iOS 9 和 OSX 10.11 要求您计划从中请求数据的所有主机使用 TLSv1.2 SSL,除非您在应用程序的 Info.plist 文件中指定异常(exception)域。

Info.plist 配置的语法如下所示:

<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>

如果您的应用程序(例如第三方网络浏览器)需要连接到任意主机,您可以这样配置:

<key>NSAppTransportSecurity</key>
<dict>
    <!--Connect to anything (this is probably BAD)-->
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

如果您必须这样做,最好更新您的服务器以使用 TLSv1.2 和 SSL(如果它们尚未这样做)。这应被视为临时解决方法。

截至今天,预发布文档没有以任何特定方式提及任何这些配置选项。完成后,我将更新答案以链接到相关文档。

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

相关文章:

ios - 为什么从 FileManager 数据初始化的 UIImages 有错误的比例?

android - OkHttp + Retrofit libssl 在两种方式的 SSL 身份验证中崩溃

iphone - NSURLConnection 不调用委托(delegate)方法

ios - 3 分钟后继续后台任务

ios - MKPinAnnotationView 下载的图像 (@3x) 不适用于 6+

ios - iCloud 无处不在的容器在删除应用程序时没有被清理?

wcf - IIS 7 中安全模式 TransportWithMessageCredential 的 WsHttpBinding 不起作用

PHP Curl 连接至 Amazon MWS 卖家 API

ios - 使用 NSURLConnection 时如何制作完整数据

ios - 如何修复 ibtool 失败,退出代码为 255