有人用过iOS 9 beta 1吗?
我使用标准的NSURLConnection连接到一个webservice,一旦调用到webservice,我就会得到下面的错误。目前在iOS 8.3中运行
可能是测试版bug?任何想法都很好!我知道这是在iOS 9开发的早期
以下是完整的错误:
CFNetwork SSLHandshake失败(-9824)
NSURLSession/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];
有关详细信息,在iOS 9和OSX 10.11中配置应用程序传输安全例外
奇怪的是,您将注意到连接试图更改
HTTP协议转换为HTTPS,以防止在代码中出现错误
你可能不小心配置错了URL。在某些情况下,这
可能真的有用,但也令人困惑。
这篇带有应用程序传输安全性的应用程序发布包含了一些很好的调试技巧
美国胸科协会失败
大多数ATS故障将显示为CFErrors,代码为-9800
系列。这些在Security/SecureTransport.h头文件中定义
2015-08-23 06:34:42.700 SelfSignedServerATSTest[3792:683731] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
CFNETWORK_DIAGNOSTICS
将环境变量CFNETWORK_DIAGNOSTICS设置为1,以便
在控制台上获取有关故障的更多信息
nscurl
该工具将通过几种不同的ATS组合运行
异常,尝试到每个异常下的给定主机的安全连接
ATS配置并报告结果。
nscurl --ats-diagnostics https://example.com
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,如果它们还没有这样做的话。这应该被认为是一个临时的解决办法。
到今天为止,预发布文档没有以任何特定的方式提到任何这些配置选项。一旦完成,我将更新答案以链接到相关文档。
有关详细信息,在iOS 9和OSX 10.11中配置应用程序传输安全例外
奇怪的是,您将注意到连接试图更改
HTTP协议转换为HTTPS,以防止在代码中出现错误
你可能不小心配置错了URL。在某些情况下,这
可能真的有用,但也令人困惑。
这篇带有应用程序传输安全性的应用程序发布包含了一些很好的调试技巧
美国胸科协会失败
大多数ATS故障将显示为CFErrors,代码为-9800
系列。这些在Security/SecureTransport.h头文件中定义
2015-08-23 06:34:42.700 SelfSignedServerATSTest[3792:683731] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
CFNETWORK_DIAGNOSTICS
将环境变量CFNETWORK_DIAGNOSTICS设置为1,以便
在控制台上获取有关故障的更多信息
nscurl
该工具将通过几种不同的ATS组合运行
异常,尝试到每个异常下的给定主机的安全连接
ATS配置并报告结果。
nscurl --ats-diagnostics https://example.com