【发布时间】:2014-04-14 07:19:39
【问题描述】:
我遇到了 SSL 固定问题。第一个问题:如果我通过 Safari 登录,将所需的证书添加到钥匙串,然后从钥匙串应用程序导出文件并将其放入我的 Xcode 项目中,是否可以?我已经有了 .cer 文件,所以关于 SO 的问题似乎与我的情况无关。
这是我的代码:
- (AFSecurityPolicy*) customSecurityPolicy{
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"cert_name" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
[securityPolicy setAllowInvalidCertificates:NO];
[securityPolicy setPinnedCertificates:@[certData]];
[securityPolicy setSSLPinningMode:AFSSLPinningModeCertificate];
return securityPolicy;
}
-(void)secureLogin{
NSString *server = @"https_url";
NSDictionary *params = @{@"login": self.loginField.text, @"password" : self.passField.text};
NSError *error = nil;
NSString *JSON = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:params
options:NSJSONWritingPrettyPrinted
error:&error]
encoding:NSUTF8StringEncoding];
//NSLog(@"JSON: %@", JSON);
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:[self customSecurityPolicy]];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:server
parameters:@{@"data" : JSON}
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"hell yea! %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error: %@", error);
}];
}
如果我设置setAllowInvalidCertificates:YES] 那么它很酷,但不安全。我试图从中获得一些意义,但到目前为止还没有。我不断得到:
错误:错误域=NSURLErrorDomain 代码=-1012“操作无法完成。 (NSURLErrorDomain 错误 -1012。)“UserInfo=0x8a35800 {NSErrorFailingURLKey=https_url, NSErrorFailingURLStringKey=https_url}
【问题讨论】:
-
你想明白了吗?我遇到了完全相同的问题。
-
在我的回答下查看我的评论
标签: ios objective-c ssl https afnetworking-2