問(wèn)題描述
最近公司的測(cè)試環(huán)境出了嚴(yán)重問(wèn)題腋么,網(wǎng)絡(luò)組的同事重新架設(shè)了測(cè)試環(huán)境莹桅,從而導(dǎo)致了每個(gè)項(xiàng)目都必須重新配置測(cè)試環(huán)境扼菠。樓主所負(fù)責(zé)的項(xiàng)目是銀行內(nèi)部使用的費(fèi)用報(bào)銷系統(tǒng)化焕,分iPhone端和iPad端兩個(gè)版本萄窜,這兩個(gè)app的登錄邏輯完全一致,但iPad端的app在測(cè)試環(huán)境始終不能正常登錄,期間樓主試了各種可能出現(xiàn)的問(wèn)題始終無(wú)果查刻,最后被同事一語(yǔ)點(diǎn)醒键兜。原因就出在https的自簽名證書上,樓主所在公司的測(cè)試環(huán)境使用的就是自簽名證書赖阻。
關(guān)于自簽名證書
我們都知道蘋果規(guī)定2017年1月1日以后蝶押,所有APP都要使用HTTPS進(jìn)行網(wǎng)絡(luò)請(qǐng)求,否則無(wú)法上架火欧,https主要功能就是將傳輸?shù)膱?bào)文進(jìn)行加密棋电,提高安全性。提到加密自然就需要證書的支持苇侵,市面上SSL證書分為兩種:一種是花錢向認(rèn)證的機(jī)構(gòu)購(gòu)買的證書赶盔,服務(wù)端如果使用的是這類證書的話,那一般客戶端不需要做什么(樓主公司的生產(chǎn)環(huán)境所使用的就是這樣的證書)榆浓,用HTTPS進(jìn)行請(qǐng)求就行了于未,蘋果內(nèi)置了那些受信任的根證書的。另一種是自己制作的證書陡鹃,使用這類證書的話是不受信任的烘浦,當(dāng)然也不用花錢買(樓主公司的測(cè)試環(huán)境證書),因此需要我們?cè)诖a中將該證書設(shè)置為信任證書萍鲸。
問(wèn)題解決方法
樓主公司的項(xiàng)目比較早期闷叉,項(xiàng)目網(wǎng)絡(luò)框架使用的是ASIHttpRequest
。當(dāng)項(xiàng)目環(huán)境改成自簽名SSL證書的時(shí)候打印臺(tái)會(huì)報(bào)錯(cuò)CFNetwork SSLHandshake failed (-9807)
脊阴,解決方法記錄下來(lái)以便以后出坑握侧。
在項(xiàng)目中找到全局 request
的創(chuàng)建代碼,在創(chuàng)建完 request
之后添加兩句代碼:
// 設(shè)置驗(yàn)證方式
[request setAuthenticationScheme:@"https"];
// 設(shè)置自簽名證書驗(yàn)證
[request setValidatesSecureCertificate:NO];
添加完這兩行代碼問(wèn)題迎刃而解嘿期!