已弃用“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
字典中保留kCFStreamSSLValidatesCertificateChain
和kCFStreamSSLPeerName
。
在声明上方添加以下行:
#pragma clang diagnostic ignored "-Wdeprecated-declarations"