在我们的iOS应用程序中,我们在将iOS设备升级到iOS8.1后出现SSL错误。任何人都可以帮助我,iOS8和iOS8.1有什么区别,ssl证书有关吗?在服务器端需要为iOS8.1添加哪种证书?
这是来自控制台的日志:
:CFNetwork SSLHandshake失败(-9824) :NSURLConnection / CFURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9824)
答案 0 :(得分:2)
您正在使用不受信任的证书连接到网站。 关于错误代码:
可以在CFStream doc文件中找到其错误域 kCFStreamErrorDomainSSL 以及属于此域的 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);