iOS - (kCFStreamErrorDomainSSL,-9813)
当连接到客户端的服务器时,我得到(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
回答:
我有同样的问题。我试过你的解决方案,但它没有奏效。设置allowInvalidCertificates,validatesDomainName and AFSSLPinningModeCertificate没有解决我的问题。经过大量的搜索后,我看到了这个类的AFSecurityPolicy的结构。
有在这个类
- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust forDomain:(nullable NSString *)domain;
的功能你要继承的AFSecurityPolicy,并在其执行返回YES。然后你将能够连接到你的服务器。
我的客户端服务器也是自签名的。
设置属性AFSecurityPolicy不能解决问题,我不知道为什么。
以上是 iOS - (kCFStreamErrorDomainSSL,-9813) 的全部内容, 来源链接: utcz.com/qa/263303.html