应用传输安全功能已禁用且仍会收到SSL握手错误

时间:2016-03-24 19:50:41

标签: ios ssl https app-transport-security nsapptransportsecurity

我在通过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

任何想法?

谢谢!

萨姆

1 个答案:

答案 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=