Ошибка HTTP-загрузки NSURLSession (kCFStreamErrorDomainSSL, -9807)

Я пытаюсь отправить данные в формате JSON на сервер с самозаверяющим сертификатом из моего приложения iOS через Objective C. К сожалению, я получаю эту ошибку:

Ошибка HTTP-загрузки NSURLSession/NSURLConnection (kCFStreamErrorDomainSSL, -9807)

В этой теме: Ошибка HTTP-загрузки NSURLConnection/CFURLConnection (kCFStreamErrorDomainSSL, -9813) iOS Я обнаружил, что должен добавить этот код в свой файл info.plist, но он у меня не работает. Кстати, когда я удаляю его, я получаю ту же ошибку с номером 9802.

<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>

Я также пытался реализовать это:

- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler{
if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]){
    if([challenge.protectionSpace.host isEqualToString:@"mydomain.com"]){
        NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
        completionHandler(NSURLSessionAuthChallengeUseCredential,credential);
    }
}

}

но я не знаю, как вызвать этот метод (где взять значения параметров этой функции) - сейчас я использую

[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    NSString *requestReply = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    NSLog(@"requestReply: %@", requestReply);
}] resume];

чтобы начать сеанс.

Я все еще новичок, поэтому, пожалуйста, извините меня, если я задам какой-то глупый вопрос или если что-то неясно. Спасибо за помощь!


person Lolipop52    schedule 19.11.2015    source источник


Ответы (1)


Также требуется, чтобы приложение поддерживало IPV6, в том числе не использовало жестко закодированные IP-адреса. Предлагается использовать NSURLSession. В противном случае необходимо добавить исключения в список приложений.

См. сессию WWDC-15 «Безопасность и ваши приложения».

iOS9 требует, чтобы сервер поддерживал только TLSv1.2 и поддерживал полную безопасность пересылки.

См. также Стивен Петерсон Блог для подробного ознакомления.

Надеюсь это поможет.

person Ronak Chaniyara    schedule 19.11.2015
comment
Спасибо за ответ. Однако я до сих пор не знаю, что я делаю неправильно. Обязательно ли использовать TLSv1.2? - Я думал, что его обходит NSAllowsArbitraryLoads. Есть ли где-нибудь ссылка на ошибки (что на самом деле означает ошибка?) - person Lolipop52; 19.11.2015