我在连接到客户端服务器时获得(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 :(得分:0)
我遇到了同样的问题。我试过你的解决方案,但它没有用。设置 allowInvalidCertificates , validatesDomainName 和 AFSSLPinningModeCertificate 未解决我的问题。经过大量的谷歌搜索后,我看到了 AFSecurityPolicy 这个类的结构。
此课程中有一项功能
- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust
forDomain:(nullable NSString *)domain;
您必须继承 AFSecurityPolicy 并在其实施中返回 YES 。然后,您就可以连接到您的服务器了。
我的客户端服务器也是自签名的。
AFSecurityPolicy 上的设置属性无法解决问题,我想知道为什么。