iOS Https 設(shè)置 支持AFNetworking 3.x

1 :自建證書

1:必須有證書,證書可以問服務(wù)器要,服務(wù)器給的證書一般都是crt格式的,我們可以轉(zhuǎn)成cer格式的,轉(zhuǎn)換方法 :openssl x509 -in 你的證書.crt -out 你的證書.cer -outform der ?百度的方法,反正我是沒有轉(zhuǎn)換成功,那我是怎么得到的呢。這里我拿百度的看一 下


拖動(dòng)證書到桌面,會(huì)得到一個(gè)名字為baidu.com.cer 的證書。如果服務(wù)器給你點(diǎn)的是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];//是否允許驗(yàn)證域名

[securityPolicy setPinnedCertificates:cerSet];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.securityPolicy =securityPolicy//設(shè)置證書

注意://https配置

/**

注意:https驗(yàn)證站點(diǎn)證書,是通過域名的,不是ip的,上邊方法只能用于域名,如果非要是IP的話必須修改 AFNetworking 的一個(gè)文件 AFSecurityPolicy.m

注釋下方代碼

SecTrustSetAnchorCertificates(serverTrust, (__bridge CFArrayRef)pinnedCertificates);

if (!AFServerTrustIsValid(serverTrust)) {

return NO;

}

**/

3,然后去驗(yàn)證看能不能通過就行了,有一些第三方不支持https的話可以添加白名單。目前只研究到這里,其他的以后補(bǔ)充!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容