Я сейчас пытаюсь подключиться к серверу с самозаверяющим сертификатом. Я использую NSURLConnection для подключения к серверу. Как я могу быть уверен, что доверяю только нужному серверу и отменяю все остальные подключения? Я использую следующий код
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
SecTrustResultType results;
SecTrustRef trust = [[challenge protectionSpace] serverTrust];
SecTrustEvaluate(trust, &results);
if (results == kSecTrustResultProceed || results == kSecTrustResultConfirm) {
[challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
} else {
[challenge.sender cancelAuthenticationChallenge:challenge];
}
}
В настоящее время SecTrustEvaluate
всегда возвращается с результатами, равными kSecTrustResultRecoverableTrustFailure
. Я установил профиль конфигурации с сертификатом на телефон с помощью утилиты настройки iphone, и он помечен как проверенный, но результаты не изменились.
Может кто-нибудь помочь мне получить результат доверия либо kSecTrustResultProceed
, либо kSecTrustResultConfirm
для самозаверяющего сертификата?