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的話可以添加白名單。目前只研究到這里,其他的以后補充!