如何在Mac Os X中调试CFNetwork SSLHandshake失败(-9824)?

时间:2015-02-08 13:08:33

标签: nsurlconnection nsurlconnectiondelegate

我的Mac Os X应用程序需要访问巴西的其他服务器,其中一台服务器似乎有sslv3问题。似乎通过MS Windows解决方案访问是正常的。我尝试使用Internet Explorer,它的工作原理。这是Firefox向我展示的一个例子:

Firefox result

我在http://www.idanfe.com/trustAuthenticationTester.zip编写了一个示例应用程序来演示该方法 - (void)连接:(NSURLConnection *)aConnection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)aChallenge在与服务器通信时根本没有被调用{{3但是我可以使用服务器https://nfe.sefaz.ce.gov.br/nfe2/services/NfeStatusServico2。目的是自定义服务器信任评估。但此时不可能。

这是我得到的错误:

CFNetwork SSLHandshake失败(-9824)

CFNetwork SSLHandshake失败(-9802)

CFNetwork SSLHandshake失败(-9802)

NSURLConnection / CFURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9802)

感谢。

1 个答案:

答案 0 :(得分:0)

最新版本的OS X在主机服务器中需要TLSv1.2 SSL,因此SSL失败。您可以在info.plist文件中设置例外。

LoadLibrary

不推荐使用NSURLConnection,你应该转而使用NSURLSession,因为在info.plist和NSURLConnection中存在处理异常的错误。

如果您想获得有关错误的更多信息,可以将架构设置下的 CFNETWORK_DIAGNOSTICS 环境变量设置为 1 ,日志将生成更精确的结果在SSL握手期间发生了什么。