iOS適配https證書問(wèn)題(AFNetworking3.0為例)
眾所周知,蘋果有言,從2017年開始,將屏蔽http的資源,強(qiáng)推https
樓主正好近日將http轉(zhuǎn)為https,給還沒動(dòng)手的朋友分享一二
1.準(zhǔn)備證書
首先找后臺(tái)要一個(gè)證書(SSL證書,一般你跟后臺(tái)說(shuō)要弄https,然后讓他給你個(gè)證書,他就知道了),我們需要的是.cer的證書。但是后臺(tái)可能給我們的是.crt的證書。我們需要轉(zhuǎn)換一下:打開終端 -> cd到.crt證書路徑 -> 輸入openssl x509 -in 你的證書.crt -out 你的證書.cer -outform der,證書就準(zhǔn)備好了,拖入工程,記得選copy。
2.新建一個(gè)類或者類方法
以下代碼借鑒的,樓主自己是放在一個(gè)叫FactoryUI的類中
//支持https
+ (AFSecurityPolicy *)customSecurityPolicy
{
//先導(dǎo)入證書,找到證書的路徑
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"你的證書名字" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
//AFSSLPinningModeCertificate 使用證書驗(yàn)證模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
//allowInvalidCertificates 是否允許無(wú)效證書(也就是自建的證書),默認(rèn)為NO
//如果是需要驗(yàn)證自建證書,需要設(shè)置為YES
securityPolicy.allowInvalidCertificates = YES;
//validatesDomainName 是否需要驗(yàn)證域名,默認(rèn)為YES;
//假如證書的域名與你請(qǐng)求的域名不一致,需把該項(xiàng)設(shè)置為NO;如設(shè)成NO的話,即服務(wù)器使用其他可信任機(jī)構(gòu)頒發(fā)的證書,也可以建立連接,這個(gè)非常危險(xiǎn),建議打開。
//置為NO,主要用于這種情況:客戶端請(qǐng)求的是子域名,而證書上的是另外一個(gè)域名。因?yàn)镾SL證書上的域名是獨(dú)立的,假如證書上注冊(cè)的域名是www.google.com,那么mail.google.com是無(wú)法驗(yàn)證通過(guò)的;當(dāng)然,有錢可以注冊(cè)通配符的域名*.google.com,但這個(gè)還是比較貴的。
//如置為NO,建議自己添加對(duì)應(yīng)域名的校驗(yàn)邏輯。
securityPolicy.validatesDomainName = NO;
NSSet *set = [[NSSet alloc] initWithObjects:certData, nil];
securityPolicy.pinnedCertificates = set;
return securityPolicy;
}
3.修改AFNetWorking的請(qǐng)求(AFNetworking3.0為例)
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer.timeoutInterval = 5.0; [manager setSecurityPolicy:[FactoryUI customSecurityPolicy]];//如2若提到的FactoryUI的類方法
···后面的就還是一樣了
補(bǔ)充:App Transport Security Settings還是要設(shè)置

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
怎么防止ios系統(tǒng)被抓包?防止ios系統(tǒng)被抓包的方法
怎么防止ios系統(tǒng)被抓包?下面小編就為大家分享一篇防止ios系統(tǒng)被抓包的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
iOS APP中保存圖片到相冊(cè)時(shí)崩潰的解決方法
下面小編就為大家分享一篇iOS APP中保存圖片到相冊(cè)時(shí)崩潰的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
iOS實(shí)現(xiàn)應(yīng)用內(nèi)切換本地化語(yǔ)言的方法實(shí)例
網(wǎng)絡(luò)上關(guān)于iOS國(guó)際化的文章很多,但基本上都是基于跟隨系統(tǒng)語(yǔ)言的國(guó)際化,而這篇文章主要給大家介紹了關(guān)于利用iOS實(shí)現(xiàn)應(yīng)用內(nèi)切換本地化語(yǔ)言的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考。2017-12-12
iOS 把圖片保存到相冊(cè),并獲取圖片文件名的實(shí)例
下面小編就為大家分享一篇iOS 把圖片保存到相冊(cè),并獲取圖片文件名的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
詳解iOS中UIButton的三大UIEdgeInsets屬性用法
這篇文章主要介紹了iOS中UIButton的三大UIEdgeInsets屬性用法,分別講解了contentEdgeInsets、imageEdgeInsets和titleEdgeInsets三個(gè)屬性在創(chuàng)建UIButton時(shí)對(duì)樣式的控制,需要的朋友可以參考下2016-04-04
iOS ScrollView嵌套tableView聯(lián)動(dòng)滾動(dòng)的思路與最佳實(shí)踐
這篇文章主要給大家介紹了關(guān)于ScrollView嵌套tableView聯(lián)動(dòng)滾動(dòng)的思路與最佳實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
iOS仿小紅書呼吸燈動(dòng)畫(核心動(dòng)畫和定時(shí)器)兩種方式實(shí)現(xiàn)
本篇文章主要介紹了iOS仿小紅書呼吸燈動(dòng)畫(核心動(dòng)畫和定時(shí)器)兩種方式實(shí)現(xiàn),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04
Objective-C中類和方法的定義以及協(xié)議的使用
這篇文章主要介紹了Objective-C中類和方法的定義以及協(xié)議的使用,配合Mac下的Xcode IDE進(jìn)行講解,需要的朋友可以參考下2016-01-01

