当前位置: 首页 > 知识库问答 >
问题:

CFNetwork SSL握手失败iOS9

殳睿
2023-03-14

iOS 9 beta 1版有人遇到过这个问题吗?

我使用标准的NSURLConnection连接到一个Web服务,一旦调用该Web服务,我就会得到以下错误。这项功能目前在iOS 8.3中运行

可能是beta bug?任何想法都会很棒!我知道这是iOS 9开发的早期阶段

以下是完整的错误:

CFNetwork SSL握手失败(-9824)NSURL会话/NSURLConnection HTTP加载失败(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];

共有3个答案

郎玮
2023-03-14

有关更多信息,请在iOS 9和OSX 10.11中配置应用程序传输安全例外

奇怪的是,您会注意到连接试图将超文本传输协议更改为https,以防止代码中的错误,在这些错误中,您可能无意中错误配置了网址。在某些情况下,这可能实际上有效,但也令人困惑。

这个运送应用程序与应用程序传输安全涵盖了一些很好的调试技巧

ATS故障

大多数ATS故障将以-9800系列代码中的CFER形式出现。这些在安全/安全传输头中定义

2015-08-23 06:34:42.700 SelfSignedServerATSTest[3792:683731] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

网络诊断

将环境变量CFNETWORK_DIAGNOSTICS设置为1,以便在控制台上获取有关故障的更多信息

nscurl

该工具将运行几个不同的ATS异常组合,在每个ATS配置下尝试与给定主机的安全连接,并报告结果。

nscurl --ats-diagnostics https://example.com
越伯寅
2023-03-14

在iOS10中,TLS字符串必须是TLSv1.0的形式。它不能仅仅是1.0。(叹息)

以下是其他答案的组合。

假设您正在尝试连接到一个只有TLS 1.0的主机(YOUR_host.COM)。

将这些添加到应用程序的信息中。普利斯特

<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>TLSv1.0</string>
            <key>NSTemporaryExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
    </dict>
</dict>
曹高阳
2023-03-14

iOS 9和OSX 10.11需要TLSv1。2 SSL适用于您计划从中请求数据的所有主机,除非您在应用程序信息中指定了例外域。plist文件。

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>

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

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

如果必须这样做,最好更新服务器以使用TLSv1。2和SSL,如果他们还没有这样做。这应该被视为一种临时解决办法。

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

 类似资料:
  • 我正在学习SSL通信,我遇到了这个问题。我正在编写一个简单的客户端,它试图与本地apache服务器握手。服务器启用https。我将服务器证书添加到所有可能的信任存储(jdk中的一个 注意:我从以下教程中获取了代码: http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html#KRB 停留

  • 我通过受ssl v3保护的cxf使用soap服务。我从服务器下载.cer文件,并通过keytool使用以下指令创建JKS文件: 在java代码中,我将此代码用于客户端配置: 对于调用此代码的服务: 当我运行代码时,会发生此错误: 我搜索此错误,我意识到该错误是针对不良信任存储的。但我不知道如何生成正确的信任库。

  • 我在使用硒测试时收到此错误 我现在的代码是 是否有其他方法可以忽略/解决此错误?

  • 我正在对我们的数据库服务进行超文本传输协议请求的大循环。一切都很好,但是每当我运行它时,在成功查询(看似随机)数量后,我都会收到以下错误:

  • 问题内容: 我正在尝试将Jenkins CI配置为对我们的项目执行持续集成,并且无法使其通过https连接到我们的SVN存储库。每当我尝试配置存储库URL并尝试连接时,都会遇到以下异常: 我在tomcat实例上启用了SSL调试(使用),并得到了以下信息: 我尝试按照这篇文章中的说明在tomcat中添加属性,但仍然出现相同的错误。 在这一点上,我对发生的事情完全感到困惑。不幸的是,我不是完全了解SS

  • 问题内容: 我已经将证书导入到信任库中,但是仍然无法成功连接到该URL。我已经尝试了所有方法,任何人都可以看到输出并提供帮助吗? 无法弄清楚这是什么,应用程序正在使用java1.6,但是SSLPoke无法通过两种情况 问题答案: 我发现客户也进行了验证。因此它是2路身份验证。客户还必须将我的公共证书导入其密钥库。