已弃用“kCFStreamSSLAllowsExpiredCertificates”和“kCFStreamSSLAllowsAnyRoot”

我已经添加了“ASIHTTPRequest”库到我的应用程序。 现在,我试图删除我的项目中的所有警告。 除了“ASIHTTPRequest”以外,我已经修复了所有其他警告。 我收到下面的警告。

已弃用“kCFStreamSSLAllowsExpiredCertificates”:

已弃用“kCFStreamSSLAllowsAnyRoot”:

如何解决这个问题?

码:

NSDictionary *sslProperties = [[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithBool:YES], kCFStreamSSLAllowsExpiredCertificates, [NSNumber numberWithBool:YES], kCFStreamSSLAllowsAnyRoot, [NSNumber numberWithBool:NO], kCFStreamSSLValidatesCertificateChain, kCFNull,kCFStreamSSLPeerName, nil]; 

截图

根据CFNetwork框架中的CFSocketStream.h中的注释:

kCFStreamSSLAllowsExpiredCertificates:
kCFStreamSSLAllowsExpiredRoots:
kCFStreamSSLAllowsAnyRoot:

影响不可信证书链评估的SSL握手标志已被弃用。 而是使用单个属性kCFStreamSSLValidatesCertificateChain禁用证书链检查,如果用户已经决定适合这样做

所以简单的解决scheme是删除不推荐使用的键和它们的值。 请仅在sslProperties字典中保留kCFStreamSSLValidatesCertificateChainkCFStreamSSLPeerName

在声明上方添加以下行:

 #pragma clang diagnostic ignored "-Wdeprecated-declarations"