Ошибка CFNetwork SSLHandshake с AFNetworking 2.0, самозаверяющим cer и [политикой setAllowInvalidCertificates:YES]

  • Я использую AFNetworking 2.
  • У меня есть самозаверяющий сертификат Root CA в моем проекте Bundle
  • Я разрешаю недействительные сертификаты с помощью: [policy setAllowInvalidCertificates:YES];
  • Мой адрес https://

Так что, по идее, самоподписанный сертификат должен быть принят.

AFSecurityPolicy

AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
[policy setAllowInvalidCertificates:YES];

AFHTTPRequestOperationManager

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];
[manager setRequestSerializer:[AFJSONRequestSerializer serializer]];
[manager setSecurityPolicy:policy];

[manager POST:url
   parameters:dictionary
      success:^(AFHTTPRequestOperation *operation, id responseObject) {
          // Process Response Object
          NSLog(@"JSON: %@", [responseObject description]);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        // Handle Error
        NSLog(@"Failure Error: %@", [error description]);
}];

Так что вроде ничего страшного.

Мой журнал:

2014-04-10 15:05:40.412 https_AF2[5548:3607] CFNetwork SSLHandshake failed (-9800)
2014-04-10 15:05:41.092 https_AF2[5548:3607] CFNetwork SSLHandshake failed (-9800)
2014-04-10 15:05:41.732 https_AF2[5548:3607] CFNetwork SSLHandshake failed (-9800)
2014-04-10 15:05:41.734 https_AF2[5548:3607] NSURLConnection/CFURLConnection HTTP load failed
(kCFStreamErrorDomainSSL, -9800)
2014-04-10 15:05:41.736 https_AF2[5548:60b] Failure Error: Error Domain=NSURLErrorDomain 
Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made."
UserInfo=0x8d6af80 
{NSErrorFailingURLStringKey=https://(myUrl)/userLogin,
NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?,
NSErrorFailingURLKey=https://(myUrl)/userLogin,
NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., 
NSUnderlyingError=0x8cb4920 "An SSL error has occurred and a secure connection to the server cannot be made."}

Единственная причина, которую я могу себе представить, заключается в том, что сервер не настроен должным образом.

Любая идея решить эту проблему будет отличной!


person Gabriel.Massana    schedule 10.04.2014    source источник


Ответы (2)


Я знаю, в чем проблема. Наконец, проблема не в коде iOS. Проблема была в URL-адресе, который мне дали.

Небольшое изменение URL решило все проблемы.

из: https://www.domain.com:8080/api/userLogin
на https://domain.com/api/userLogin

Так просто, как, что.

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

person Gabriel.Massana    schedule 11.04.2014

AFSecurityPolicy, Можете ли вы попробовать установить для проверки имени домена значение НЕТ?

policy.validatesDomainName = NO;
person sehaswaran    schedule 10.04.2014