服務(wù)器配置了ssl證書猪贪,iOS客戶端要做什么呢跷敬?
用AFN啥都不用配也可以正常使用??
--------------------------下面是之前寫的,劃清界限--------------------------
具體操作步驟如下:
1.別方热押,
2.搞事情西傀。
(1)證書來源有多種斤寇,想和服務(wù)器端促進(jìn)一下感情的話可以和服務(wù)器端人員要各種證書相關(guān)文件,我們的服務(wù)器端給出的是pem文件池凄,
這個(gè)是可以直接安裝的證書抡驼。雙擊之后,效果如下:
(2).鑰匙串選項(xiàng)我選擇了系統(tǒng)肿仑,選擇哪個(gè)都一樣致盟,點(diǎn)擊添加。
在鑰匙串訪問里搜索服務(wù)器的域名即可找到剛剛安裝的證書尤慰,如圖:
(3).右鍵證書導(dǎo)出cer文件
將cer文件拖進(jìn)(復(fù)制)項(xiàng)目中馏锡,并在Build Phases->Copy Bundle Resources中添加文件。
(4).在項(xiàng)目添加相應(yīng)代碼
//配置基地址 很關(guān)鍵 沒這句啥都干不了
AFHTTPSessionManager *httpManager = [[AFHTTPSessionManager manager] initWithBaseURL:[NSURL URLWithString:urlStr]];
NSString *cerPath = [[NSBundle mainBundle]pathForResource:@"xxx" ofType:@"cer"];
NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
NSSet *cerSet = [NSSet setWithObjects:cerData, nil];
// AFSSLPinningModeCertificate 使用證書驗(yàn)證模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// allowInvalidCertificates 是否允許無效證書(也就是自建的證書)伟端,默認(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是無法驗(yàn)證通過的刀森;當(dāng)然,有錢可以注冊(cè)通配符的域名*.google.com报账,但這個(gè)還是比較貴的撒强。
//如置為NO,建議自己添加對(duì)應(yīng)域名的校驗(yàn)邏輯笙什。
securityPolicy.validatesDomainName = NO;
securityPolicy.pinnedCertificates = cerSet;
[manager setSecurityPolicy:securityPolicy];
這樣就配置完就可以嘍。
前面說了證書來源胚想,這里有第二種方式獲取證書琐凭。
在瀏覽器中打開服務(wù)器地址,如果是safari如圖:
打開鏈接后浊服,點(diǎn)擊??圖標(biāo)统屈,彈出如圖窗口胚吁,顯示證書->直接拖拽證書圖標(biāo)至桌面即可使用。
chrome獲取證書愁憔,打開鏈接->右鍵網(wǎng)頁內(nèi)容->檢查腕扶,如圖:
security->view certificate->拖拽圖標(biāo)至桌面即可使用。