在iOS 9中通过HTTPS通过IP地址连接到服务器时,kCFStreamErrorDomainSSL,-9802

在iOS 9中通过HTTPS通过IP地址连接到服务器时,kCFStreamErrorDomainSSL,-9802,ios,iphone,afnetworking,ios9,app-transport-security,Ios,Iphone,Afnetworking,Ios9,App Transport Security,我们有一个通过HTTPS连接到服务器的iOS应用程序。当应用程序使用新的iOS 9 SDK构建并在iOS 9下运行时,会发生以下错误: NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802) 该应用程序使用带有固定证书的AF1.3.4网络。如果使用服务器的IP地址连接到服务器,则会出现问题。如果我添加配置,或者如果我用域名连接到服务器,它就会工作 Tomcat连接器配置有sslEnabledP

我们有一个通过HTTPS连接到服务器的iOS应用程序。当应用程序使用新的iOS 9 SDK构建并在iOS 9下运行时,会发生以下错误:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
该应用程序使用带有固定证书的AF1.3.4网络。如果使用服务器的IP地址连接到服务器,则会出现问题。如果我添加配置,或者如果我用域名连接到服务器,它就会工作

Tomcat连接器配置有sslEnabledProtocols=“TLSv1,TLSv1.1,TLSv1.2”

我试过了,但似乎什么都没变


我还没有找到多少关于ATS的官方文件。可能使用IP地址连接不起作用?

iOS9要求服务器只支持TLSv1.2并支持完美的前向安全性

应用程序还需要支持IPV6,包括不使用硬编码IP地址。建议使用
NSURLSession
。否则,必须在应用程序列表中添加例外情况

请参阅WWDC-15课程“安全和您的应用”


有关详细信息,请参阅。

我找到了另一个堆栈溢出答案,其中列出了服务器上的确切新要求清单,以完全满足iOS 9默认应用程序传输安全要求:

希望对您有所帮助。

您可以将此添加到“Info.plist文件中,它将允许非安全连接:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads

我在这个问题上卡住了一段时间,尝试了Info.plist中的所有技巧,但仍然有错误:

HTTP load failed (kCFStreamErrorDomainSSL, -9813)
尝试连接到开发中的本地主机服务器时

使用react本机项目在本地开发,该项目连接到一个带有自签名证书的API,我将系统设置为信任该证书,但我花了一段时间才意识到,我还需要IOS模拟器接受我的证书作为受信任证书,以克服此错误

在模拟器的主屏幕中,您应该能够将证书文件拖到模拟器中,以提示它添加证书配置文件。 或者,如果可以通过模拟器safari浏览器中的本地主机url访问证书,则可以通过safari接受证书


希望这能帮助一些人,因为我在它为我点击前,在周围转圈

解决方案1:

如果您正在寻找解决方案,请使用以下方法:

  • 使用值true添加nsAllowsArbitalLoads类型为boolean的键
  • 您的Info.plist文件应如下所示:

    但是,不建议使用这种方法,因为它允许所有不安全的连接

    解决方案2:

    您在服务器上应用的
    SSL证书应至少为TLSv2.0类型,因为iOS 10需要此类型。
    查看此项了解详细信息

  • 添加n包含boolean类型的键true
  • 添加NSTemporaryExceptionAllowsInsecureHTTPLoads类型为boolean的键,值为true
  • 添加NSTemporaryExceptionMinimumTLSVersion类型为String的键,值为TLSv1.2
  • 您的Info.plist文件应如下所示:


    伟大的博客参考+1!一定要读那篇博文。最后,他解释了如何禁用此功能,以及为什么不应该禁用。当您希望通过IP(不含ssl)将应用程序连接到内部网络上的服务器时,如何进行内部测试?我的服务器支持TLS 1.2。我已经添加了一个例外(包括子域)以仅绕过前向保密,但我仍然得到了这个错误(
    kcfstreamerordomainssl,-9802
    )@NicolasMiari你找到解决方案了吗?在我的iOS 9测试设备上,它构建并运行,但在我的iOS 10设备上,我收到了您发布的错误。我已经尝试了我在上看到的所有东西,所以(我知道)没有任何东西允许应用程序连接。我只是加载我的启动屏幕,并得到你发布的错误。可能重复的