2016-08-02 3 views
0

Я получаю (kCFStreamErrorDomainSSL, -9813) при подключении к серверу клиента.iOS - (kCFStreamErrorDomainSSL, -9813)

Сервер клиента имеет самоподписанный сертификат, который я не могу изменить. Приложение использует AFNetworking 3.x. Я пробовал следующее, но ничего не работает.

Если кто-то может мне помочь, он будет очень признателен.

Info.plist:

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

     <key>NSExceptionDomains</key> 
     <dict> 
      <key> *** CLIENT HOSTNAME *** </key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 
       <true/> 
       <key>NSTemporaryExceptionMinimumTLSVersion</key> 
       <string>TLSv1.0</string> 
       <key>NSTemporaryExceptionRequiresForwardSecrecy</key> 
       <false/> 
      </dict> 
     </dict> 

    </dict> 

AFNetworking менеджер соединений:

AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 

#ifdef USE_SELF_SIGNED_CERT_RULES 
    manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; 
    manager.securityPolicy.allowInvalidCertificates = YES; 
    manager.securityPolicy.validatesDomainName = YES; 
#endif 

ответ

0

У меня была такая же проблема. Я попробовал ваше решение, но оно не сработало. Настройки allowInvalidCertificates, validatesDomainName и AFSSLPinningModeCertificate не решил мою проблему. После прохождения большого количества поисковых запросов я увидел структуру AFSecurityPolicy этот класс.

Существует функция в этом классе

- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust 
       forDomain:(nullable NSString *)domain; 

Вы должны наследоваться AFSecurityPolicy и вернуть YES в его реализации. Затем вы сможете подключиться к своему серверу.

Мой клиентский сервер также был подписан сам по себе.

Свойства объекта на AFSecurityPolicy не решает проблему, интересно, почему.

+0

Спасибо, Мухаммад, он работал как шарм. Я сделал то, что вы сказали, я подклассифицировал оценкуServerTrust: затем вызвал его в setSessionDidReceiveAuthenticationChallengeBlock, когда это необходимо. – PerroVerde

Смежные вопросы