AFNetworking SSL证书失败iOS



我花了很多时间寻找答案,但仍然没有运气,所以我决定放弃并向社区寻求帮助:

我有一个带有自签名证书的开发服务器

2是的,我使用了policy.allowInvalidCertificates = YES;

3 SSL在自定义端口44302上

我需要运行一个下载任务,因为请求返回一个数据流 下面是我的代码:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
policy.allowInvalidCertificates = YES;
manager.securityPolicy = policy;
NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"https://self_signed_cert.net:44302/storage/%@/action.download", _ticketId]];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
    if (error) {
        NSLog(@"Error: %@", error);
    } else {
        NSLog(@"%@ %@", response, responseObject);
    }
}];
[dataTask resume];

错误如下:

2015-08-03 18:18:15.901 SSL_TEST[1517:23 . 943] Error: Error .错误Domain=NSURLErrorDomain Code=-1200 " SSL错误无法建立与服务器的安全连接。"用户信息= 0 x787d2f20{NSLocalizedDescription= SSL错误已经发生,一个安全的无法连接到服务器。NSLocalizedRecoverySuggestion=是否要连接到服务器呢?_kCFStreamErrorCodeKey = -9806,NSErrorFailingURLStringKey = https://self_signed_cert.net: 44302/存储/a430f316cfe076e9850874c0edad3dcb/action.download,_kCFStreamErrorDomainKey=3, NSUnderlyingError=0x787da700 "操作无法完成。"(kCFErrorDomainCFNetwork错误-1200年。)",NSErrorFailingURLKey = https://self_signed_cert.net: 44302/存储/a430f316cfe076e9850874c0edad3dcb/action.download}

将非常感谢您的帮助!谢谢。

我试过一个空的项目,它在应用程序上工作:

NSURL* lBaseURL = [NSURL URLWithString:@"https://myDomain/"];
    AFHTTPSessionManager* lSessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:lBaseURL
                                              sessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

    AFSecurityPolicy* lPolicy= [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
    lPolicy.allowInvalidCertificates = YES;
    lSessionManager.securityPolicy = lPolicy;

    [lSessionManager GET:@"https://myDomain/api/"
              parameters:nil
                 success:^(NSURLSessionDataTask * _Nonnull task, id  _Nonnull JSON)
     {
         NSLog(@"success %@", JSON);
     }
                 failure:^(NSURLSessionDataTask * _Nonnull task, NSError * _Nonnull error)
     {
         NSLog(@"failure %@", error);
     }];
  • 不要忘记在你的目标(在应用程序和手表应用程序中)添加你的。文件
  • 激活ATS进入。plist NSAppTransportSecurity

但是我坚持使用watchOS 2.0扩展。它只会失败,并显示以下错误:

Error Domain=NSURLErrorDomain Code=-1200 " SSL错误发生无法建立与服务器的安全连接。"UserInfo={NSLocalizedRecoverySuggestion=您想要连接到服务器呢?NSErrorFailingURLKey = https://myDomain/api_kCFStreamErrorCodeKey = -9802, NSErrorFailingURLStringKey = https://myDomain/apiNSErrorClientCertificateStateKey = 0, _kCFStreamErrorDomainKey = 3,NSLocalizedDescription= SSL错误已经发生,安全无法连接到服务器。}

最新更新