AFNetworking2的SSL身份认证 -1022错误解决办法

本文介绍了如何解决使用 AFNetworking 发送 HTTPS 请求时出现的-1012错误。主要通过导入 cer 证书到 main bundle,并设置 AFSecurityPolicy 的属性来实现 SSL Pinning 来确保安全连接。
错误说明,AFNetworking发送Https的网络请求时,往往会遇到-1012错误
Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. (NSURLErrorDomain error -1012.)" UserInfo=0x8d635f0 {NSErrorFailingURLKey=...URL...}
错误解决办法:
1、下载需要访问地址的cer证书或者别的格式转换出cer证书,放入mainbundle中
转换方法 openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der
2、编写以下方法设置AFHTTPRequestOperationManager的securityPolicy属性,特别注意红字的两行代码

- (AFSecurityPolicy*)customSecurityPolicy

{

    /**** SSL Pinning ****/

    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"证书名" ofType:@"cer"];

    NSData *certData = [NSData dataWithContentsOfFile:cerPath];

    AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];

    [securityPolicy setAllowInvalidCertificates:YES];

    [securityPolicy setValidatesCertificateChain:NO];

    [securityPolicy setPinnedCertificates:@[certData]];

    [securityPolicy setSSLPinningMode:AFSSLPinningModeCertificate];

    /**** SSL Pinning ****/

    return securityPolicy;

}

2 设置manager

AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];

    [mgr setSecurityPolicy:[self customSecurityPolicy]];

3发送请求:

NSDictionary *params = @{ 参数 };

    [mgr GET:"URL字符串" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {

        成功代码

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

失败代码

    }];



评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值