設(shè)置AFN請(qǐng)求管理者的時(shí)候?添加?https?ssl?驗(yàn)證。
//?1.獲得請(qǐng)求管理者
AFHTTPSessionManager*manager?=?[AFHTTPSessionManagermanager];
//?2.加上這個(gè)函數(shù),https?ssl?驗(yàn)證。
[managersetSecurityPolicy:[selfcustomSecurityPolicy]];
//?https?ssl?驗(yàn)證函數(shù)
-?(AFSecurityPolicy*)customSecurityPolicy?{
//?先導(dǎo)入證書(shū)?證書(shū)由服務(wù)端生成劣挫,具體由服務(wù)端人員操作
NSString*cerPath?=?[[NSBundlemainBundle]pathForResource:@"xxx"ofType:@"cer"];//證書(shū)的路徑
NSData*cerData?=?[NSDatadataWithContentsOfFile:cerPath];
//?AFSSLPinningModeCertificate?使用證書(shū)驗(yàn)證模式
AFSecurityPolicy*securityPolicy?=?[AFSecurityPolicypolicyWithPinningMode:AFSSLPinningModeCertificate];
//?allowInvalidCertificates?是否允許無(wú)效證書(shū)(也就是自建的證書(shū)),默認(rèn)為NO
//?如果是需要驗(yàn)證自建證書(shū),需要設(shè)置為YES
securityPolicy.allowInvalidCertificates=YES;
//validatesDomainName?是否需要驗(yàn)證域名,默認(rèn)為YES;
//假如證書(shū)的域名與你請(qǐng)求的域名不一致蹦渣,需把該項(xiàng)設(shè)置為NO;如設(shè)成NO的話(huà)貌亭,即服務(wù)器使用其他可信任機(jī)構(gòu)頒發(fā)的證書(shū)柬唯,也可以建立連接,這個(gè)非常危險(xiǎn)圃庭,建議打開(kāi)锄奢。
//置為NO,主要用于這種情況:客戶(hù)端請(qǐng)求的是子域名剧腻,而證書(shū)上的是另外一個(gè)域名拘央。因?yàn)镾SL證書(shū)上的域名是獨(dú)立的,假如證書(shū)上注冊(cè)的域名是www.google.com恕酸,那么mail.google.com是無(wú)法驗(yàn)證通過(guò)的堪滨;當(dāng)然,有錢(qián)可以注冊(cè)通配符的域名*.google.com蕊温,但這個(gè)還是比較貴的袱箱。
//如置為NO,建議自己添加對(duì)應(yīng)域名的校驗(yàn)邏輯义矛。
securityPolicy.validatesDomainName=NO;
securityPolicy.pinnedCertificates=?[[NSSetalloc]initWithObjects:cerData,nilnil];
returnsecurityPolicy;
}
三.關(guān)于證書(shū)?參考文章:http://www.2cto.com/Article/201510/444706.html
服務(wù)端給的是crt后綴的證書(shū)发笔,其中iOS客戶(hù)端用到的cer證書(shū),是需要開(kāi)發(fā)人員轉(zhuǎn)換:
1.證書(shū)轉(zhuǎn)換
在服務(wù)器人員凉翻,給你發(fā)送的crt證書(shū)后了讨,進(jìn)到證書(shū)路徑,執(zhí)行下面語(yǔ)句
openssl?x509-in?你的證書(shū).crt-out?你的證書(shū).cer-outform?der
這樣你就可以得到cer類(lèi)型的證書(shū)了制轰。雙擊前计,導(dǎo)入電腦。
2.證書(shū)放入工程
1垃杖、可以直接把轉(zhuǎn)換好的cer文件拖動(dòng)到工程中男杈。
2、可以在鑰匙串內(nèi)调俘,找到你導(dǎo)入的證書(shū)伶棒,單擊右鍵,導(dǎo)出項(xiàng)目彩库,就可以導(dǎo)出.cer文件的證書(shū)了
參考鏈接:http://www.reibang.com/p/97745be81d64肤无。
四.在info.plist去掉之前允許http加載的代碼?就是刪除下面的代碼(么有的就省了這一步)
NSAppTransportSecurity
NSAllowsArbitraryLoads