'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];
![screenshot]()
Ответы
Ответ 1
В соответствии с комментариями в CFSocketStream.h в каркасе CFNetwork:
kCFStreamSSLAllowsExpiredCertificates:
kCFStreamSSLAllowsExpiredRoots:
kCFStreamSSLAllowsAnyRoot:
Флаги подтверждения SSL, которые влияют на проверку цепочки сертификатов ненадежной, устарели. Вместо этого используйте одиночное свойство kCFStreamSSLValidatesCertificateChain
, чтобы отключить проверку цепочки сертификатов, если пользователь решил, что это целесообразно сделать
Таким образом, простым решением является удаление устаревших ключей и их значений. Храните только kCFStreamSSLValidatesCertificateChain
и kCFStreamSSLPeerName
в словаре sslProperties
.
Ответ 2
Добавьте следующую надписью следующую строку:
#pragma clang diagnostic ignored "-Wdeprecated-declarations"