1.最近在實現(xiàn)Https的請求,但是在項目導(dǎo)入cer證書后,直接在Afnetworking中斷點崩潰在這里,查找了好多的原因終于找到了問題的所在, 其實是.cer證書轉(zhuǎn)換的時候出現(xiàn)了問題!
2.我們可以找后臺要一下.crt證書,
3.我就用這個指令轉(zhuǎn)換的:openssl x509 -in pn.crt -out ccc.cer -outform der,重新生成一個.cer證書這樣就可以了????
4.希望這個簡書對遇到同樣問題的朋友有所幫助??????
[pinnedCertificates addObject:(__bridge_transfer id)SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certificateData)]
首先先實現(xiàn)Https的配置
//先導(dǎo)入證書,找到證書的路徑
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"newll" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
NSSet * certSet = [[NSSet alloc] initWithObjects:certData, nil];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// 是否允許,NO-- 不允許無效的證書
[securityPolicy setAllowInvalidCertificates:YES];
// 設(shè)置證書
[securityPolicy setPinnedCertificates:certSet];
securityPolicy.validatesDomainName = NO;
AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/html",@"text/json", @"text/javascript",@"text/plain", nil];
//關(guān)閉緩存避免干擾測試
manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
manager.securityPolicy=securityPolicy;
NSString*urlStr=[NSString stringWithFormat:@"%@/userLogin",@"https://192.168.150.239/pnservice"];
NSDictionary*params=@{@"userName":@"18132097435",@"userPassword":@"123456",@"appA":[NSString stringWithFormat:@"%d",a]};
[HTTPTools POST:urlStr parameters:params success:^(id responseObject) {
if (responseObject)
{
NSLog(@"%@",responseObject);
NSString* numberStr=[NSString stringWithFormat:@"%@",responseObject[@"resultCode"]];
if ([numberStr isEqualToString:@"1"])
{
}
}
} failure:^(NSError *error) {
if (error)
{
NSLog(@"%@",error);
}
}];