我在服务器上有自签名证书验证.当我尝试在mac上的浏览器中使用api https://wikiroutes.info/test/api/ios/getCities时,它的工作仅在我接受.p12证书时.我找不到在AFNetworking中输入.p12密码的位置.我也有文件.der,但是当我使用它时,我kSecTrustResultRecoverableTrustFailure
的代码有错误SecTrustEvaluate(allowedTrust, &result)
我的代码
NSString* fileRoot = [[NSBundle mainBundle] pathForResource:@"cert.pem" ofType:@"der"]; NSData *certData = [[NSData alloc] initWithContentsOfFile:fileRoot]; AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init]; securityPolicy.SSLPinningMode = AFSSLPinningModeCertificate; [securityPolicy setAllowInvalidCertificates:YES]; securityPolicy.pinnedCertificates = @[certData]; AFHTTPRequestOperationManager *operationManager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"https://wikiroutes.info"]]; operationManager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; operationManager.securityPolicy = securityPolicy; [operationManager GET:@"test/api/ios/getCities" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"response %@",responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"error %@",error); }];
这是我的测试项目.https://www.dropbox.com/s/410w5bau3e3slx9/testApp.zip
它的证书文件
https://www.dropbox.com/s/hk9hywri37wxpet/cert.pem.der https://www.dropbox.com/s/2cpfhokh59jo15d/cert.p12(password-nM123456)