'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"