【发布时间】:2015-03-04 16:27:58
【问题描述】:
我们一直很难使用 AFNetworking 2.5.0 通过 SSL 保护我们应用的网络连接。
我们使用自签名证书颁发机构并使用固定证书实施自定义安全策略。
我们已经测试了很多 AFNetworking 提供的配置,但到目前为止都不是很幸运。我们收到的错误信息是:
2015-01-05 19:03:07.191 AppName[9301:319051] 更新用户时出错 旅行。错误:错误域=NSURLErrorDomain 代码=-1012 " 操作无法完成。 (NSURLErrorDomain 错误 -1012。)” 用户信息=0x7ae056b0 {NSErrorFailingURLKey=https://api.XXX.com/XXX/XXX/, NSErrorFailingURLStringKey=https://api.XXX.com/XXX/XXX/}
我们的证书在 cURL 和 Android 等其他客户端上运行良好。使用 HTTP 时,我们的实现也可以正常工作。
有人知道与固定证书和 AFNetworking 相关的任何问题吗?如果是,我们将不胜感激您的任何指点。
这是实现的一部分:
+ (AFSecurityPolicy*)customSecurityPolicy {
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"der"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
[securityPolicy setAllowInvalidCertificates:NO];
[securityPolicy setValidatesCertificateChain:NO];
[securityPolicy setPinnedCertificates:@[certData]];
return securityPolicy;
}
+ (AFHTTPRequestOperationManager*)customHttpRequestOperationManager {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy = [self customSecurityPolicy]; // SSL
return manager;
}
+(void)getRequestWithUrl:(NSString*)url success:(void(^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void(^) (AFHTTPRequestOperation *operation, NSError *error))failure {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
AFHTTPRequestOperationManager *manager = [HttpClient customHttpRequestOperationManager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
success(operation, responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
failure(operation, error);
}];
}
谢谢!
【问题讨论】:
-
您能以文本形式提供您的内联代码吗?这使得其他人更容易复制/修改/测试。
-
感谢您的评论 -- 会的。
标签: ios ssl afnetworking afnetworking-2