2

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

这是来自控制台的日志:

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

4

1 回答 1

2

您正在使用不受信任的证书连接到站点。关于错误代码:

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

errSSLPeerHandshakeFail     = -9824,    /* handshake failure */

解决方案是从已知的证书颁发机构获取证书,或将该证书添加到您的钥匙串中的受信任证书列表中。

每当您尝试使用不受信任的证书连接到站点时,都会调用以下 API 来做出有关此不受信任证书的决定。你很可能需要实现这个NSURLConnectionDelegate 方法

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

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

SecTrustRef trust = [[challenge protectionSpace] serverTrust];
SecCertificateRef leafCert = SecTrustGetCertificateAtIndex(trust, 0);
于 2015-01-23T19:32:33.637 回答