前一篇的例子讲的是简单的无证书访问https,这里再补充一种CER证书访问的方式.
1. 使用这种方式,首先得获取到网页的CER证书.获取证书的方式也很多,这里介绍一个最简单的方式:openssl的方式,代码如下:
openssl s_client -connect kyfw.12306.cn:443 /dev/null | openssl x509 -outform DER > https.cer
2. 将获取到的https.cer证书拉进工程里面
3.代码中使用CER证书访问https网络数据
- (void)httpsDemo2{
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"https.cer" ofType:nil];
NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
NSSet *set = [[NSSet alloc] initWithObjects:cerData, nil];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:set];
manager.securityPolicy.allowInvalidCertificates = YES;
[manager GET:@"https://kyfw.12306.cn/otn/leftTicket/init" parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"%@", responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
}];
}
注:关于ATS的配置前面一篇已经讲过,这里就不赘述了!
作者:汪泽煌
QQ:563206959
网友评论