1 :自建证书
1:必须有证书,证书可以问服务器要,服务器给的证书一般都是crt格式的,我们可以转成cer格式的,转换方法 :openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der 百度的方法,反正我是没有转换成功,那我是怎么得到的呢。这里我拿百度的看一 下
拖动证书到桌面,会得到一个名字为baidu.com.cer 的证书。如果服务器给你点的是cer格式的就忽略上一步
2:得到证书接下来就很好做了,把证书倒入工程,放在根目录里,接下来就是写代码了
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"证书的名字" ofType:@"cer"];//证书的路径
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
NSSet *cerSet = [[NSSet alloc] initWithObjects:certData, nil];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
[securityPolicy setAllowInvalidCertificates:YES];//是否允许无效证书(自建证书)
[securityPolicy setValidatesDomainName:YES];//是否允许验证域名
[securityPolicy setPinnedCertificates:cerSet];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.securityPolicy =securityPolicy//设置证书
注意://https配置
/**
注意:https验证站点证书,是通过域名的,不是ip的,上边方法只能用于域名,如果非要是IP的话必须修改 AFNetworking 的一个文件 AFSecurityPolicy.m
注释下方代码
SecTrustSetAnchorCertificates(serverTrust, (__bridge CFArrayRef)pinnedCertificates);
if (!AFServerTrustIsValid(serverTrust)) {
return NO;
}
**/
3,然后去验证看能不能通过就行了,有一些第三方不支持https的话可以添加白名单。目前只研究到这里,其他的以后补充!