首页 文章

CoreDova APP中的SURLConnection / CFURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9824)

提问于
浏览
2

在我们的iOS应用程序中,我们在将iOS设备升级到iOS8.1后出现SSL错误 . 任何人都可以帮助我,iOS8和iOS8.1有什么区别,ssl证书有关吗?在服务器端需要为iOS8.1添加哪种证书?

这是来自控制台的日志:

:CFNetwork SSLHandshake失败(-9824):NSURLConnection / CFURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9824)

1 回答

  • 2

    您正在连接到具有不受信任证书的站点 . 关于错误代码:

    其错误域 kCFStreamErrorDomainSSL 和属于此域的CFStream doc错误代码可以在SecureTransport.h文件中找到 . 根据这个文件-9824是

    errSSLPeerHandshakeFail     = -9824,    /* handshake failure */
    

    解决方案是从已知证书颁发机构获取证书,或将该证书添加到密钥链中的可信证书列表中 .

    每当您尝试使用不受信任的证书连接到站点时,将调用API以对此不受信任的证书做出决定 . 你很可能需要实现这个NSURLConnectionDelegate method

    - (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
    

    在此方法中,您可以调用以下内容来调查证书 .

    SecTrustRef trust = [[challenge protectionSpace] serverTrust];
    SecCertificateRef leafCert = SecTrustGetCertificateAtIndex(trust, 0);
    

相关问题