我在通过HTTPS / SSL建立API连接时遇到问题。我使用下面的字典完全禁用了App Transport Security(ATS)(尽管SSL证书通过了NSCURL的所有测试)。
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</plist>
但是:仍然存在SSL握手错误(如下所示),当使用Google搜索时,仅表示它与App Transport Security有关。
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
我创建了一个演示问题的最小示例项目available on GitHub (https://github.com/samheather/AppTransportSecurityDemo)。您应该发现在运行项目时它会在几秒钟内崩溃(在尝试在viewDidLoad中建立连接之后直接崩溃)。
我尝试连接的域名为https://demo.heather.sh,并且具有响应的证书(因此可以查看证书)的示例网址为https://demo.heather.sh:443/checkOnline。
任何想法?
谢谢!
萨姆
答案 0 :(得分:1)
如iOS App Transport Security not accepting TLSv1.2 connection and plist exceptions not making any difference所述,问题在于服务器没有提供与中级证书相结合的证书。现在这已经修复,一切正常:)
正如Anand(上图)所说,检查这一点的一个很好的工具是:http://ssllabs.com/ssltest/analyze.html?d=