前一篇的例子講的是簡單的無證書訪問https,這里再補充一種CER證書訪問的方式.
1. 使用這種方式,首先得獲取到網(wǎng)頁的CER證書.獲取證書的方式也很多,這里介紹一個最簡單的方式:openssl的方式,代碼如下:
openssl s_client -connect kyfw.12306.cn:443 /dev/null | openssl x509 -outform DER > https.cer
2. 將獲取到的https.cer證書拉進工程里面
3.代碼中使用CER證書訪問https網(wǎng)絡數(shù)據(jù)
- (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的配置前面一篇已經(jīng)講過,這里就不贅述了!
作者:汪澤煌 ?
QQ:563206959