[轉(zhuǎn)]iOS客戶端https配置

本文主要是自己糾結(jié)https時遇到的配置問題疆股。

iOS配置HTTPS

正規(guī)證書

如果是正規(guī)的數(shù)字證書認(rèn)證機(jī)構(gòu)頒發(fā)的證書牺六,就不需要進(jìn)行任何配置丝蹭,記得將url前面加上https即可正常訪問秤掌,達(dá)到加密以及通過審核的目的汉操。但是缺點(diǎn)是要錢再来,而且費(fèi)用不低。
但是磷瘤!好消息芒篷!好消息!好消息2筛俊U肼!
阿里云和騰訊云現(xiàn)在提供免費(fèi)的正規(guī)證書使用了扳抽!
騰訊云提供的沒用不清楚篡帕,但是阿里云提供的免費(fèi)證書有效期為一年,一年后能不能重新免費(fèi)再配一個就不清楚了贸呢。但是這個證書是正規(guī)的赂苗,親測有效,用了再說贮尉,省了一大筆麻煩拌滋。
下面提供一些傳送門:
阿里云服務(wù)器配置證書教程:阿里云的文檔簡直是業(yè)界楷模
阿里云證書購買(選擇免費(fèi)的那個):選擇免費(fèi)的那個,看看其余的價格就是費(fèi)用確實(shí)不低了
阿里云配置蘋果ATS幫助文檔:很貼心地針對蘋果的要求專門寫了個服務(wù)器端的配置注意事項猜谚,其實(shí)從阿里云和騰訊云都退出了免費(fèi)的證書來看败砂,很好奇蘋果的強(qiáng)力要求是不是對https的普及和平民化起到了一定的推動作用
騰訊云檢測ATS支持度:騰訊貼心地推出了一個供大家檢測自家服務(wù)器配置后是否符合蘋果要求的服務(wù)赌渣,哪里不足哪里滿足都很詳細(xì)。


自生成證書
但如果在如此大好的環(huán)境下還想用自生成的證書昌犹,那么除了服務(wù)器的配置要滿足蘋果的要求外(要求見上方阿里云的文檔)坚芜,工程內(nèi)也需要做一些配置。
首先斜姥,需要把證書放到工程內(nèi)鸿竖,必須是cer格式的,證書有多重格式铸敏,不同格式的轉(zhuǎn)換見這個網(wǎng)站缚忧。是可以在mac的終端中直接輸入命令行轉(zhuǎn)換的。
放到工程內(nèi)后杈笔,去 info.plist 中增加如下圖的配置:

此外闪水,還需要對網(wǎng)絡(luò)請求部分的代碼進(jìn)行修改,因?yàn)橐嬖V它接受這個證書蒙具。這里球榆,就要針對你使用的不同的網(wǎng)絡(luò)請求方式有不同的設(shè)置了。

NSURLConnection
其實(shí)這個在iOS 9中已經(jīng)廢棄被NSURLSession取代了禁筏,不過還是說一下持钉,直接添加下面的代理方法就可以了:

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
 if(challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust) 
  { // 告訴服務(wù)器,客戶端信任證書 
    // 創(chuàng)建憑據(jù)對象 
    NSURLCredential *credntial = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; 
    // 告訴服務(wù)器信任證書 
    [challenge.sender useCredential:credntial forAuthenticationChallenge:challenge]; 
  }
}

NSURLSession
系統(tǒng)自帶的類中現(xiàn)在就是推薦使用這個類篱昔,參考如下代碼設(shè)置:

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * __nullable credential))completionHandler 
{ // 判斷是否是信任服務(wù)器證書       
if(challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust) 
  { // 告訴服務(wù)器每强,客戶端信任證書 
    // 創(chuàng)建憑據(jù)對象 
    NSURLCredential *credntial = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; // 通過completionHandler告訴服務(wù)器信任證書 completionHandler(NSURLSessionAuthChallengeUseCredential,credntial); 
  }
 NSLog(@"protectionSpace = %@",challenge.protectionSpace);
}

AFNetworking 2.x版本
隨著iOS 9中對NSURLConnection的廢棄, AFNetworking 3.0也做出了修改旱爆,不過還是有用2.新版本的舀射,我們只用在原來使用AFHTTPRequestOperationManager類進(jìn)行網(wǎng)絡(luò)請求的基礎(chǔ)上窘茁,改變它的安全策略并配置證書:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
// https ================ 
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// 證書模式
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"證書名字" ofType:@"cer"]; 
NSData *cerData = [NSData dataWithContentsOfFile:cerPath]; securityPolicy.pinnedCertificates = [[NSArray alloc] initWithObjects:cerData, nil];
// 配置證書 
securityPolicy.allowInvalidCertificates = YES;
// 客戶端是否信任非法證書 
[securityPolicy setValidatesDomainName:NO];
// 是否在證書域字段中驗(yàn)證域名 
manager.securityPolicy = securityPolicy; 
// ====================== 
// 常規(guī)的進(jìn)行POST怀伦、GET等請求操作 
// ...

AFNetworking 3.x版本
新的版本的里廢棄了基于NSURLConnection封裝的AFHTTPRequestOperationManager,轉(zhuǎn)而使用基于NSURLSession封裝的AFHTTPSessionManager了山林。

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
// https ================ 
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// 證書模式 
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"證書名字" ofType:@"cer"]; 
NSData *cerData = [NSData dataWithContentsOfFile:cerPath]; securityPolicy.pinnedCertificates = [[NSArray alloc] initWithObjects:cerData, nil];
// 配置證書 
securityPolicy.allowInvalidCertificates = YES;
// 客戶端是否信任非法證書
[securityPolicy setValidatesDomainName:NO];
// 是否在證書域字段中驗(yàn)證域名 
manager.securityPolicy = securityPolicy; 
// ====================== 
// 常規(guī)的進(jìn)行POST房待、GET等請求操作 
// ...

以上,就是常用的網(wǎng)絡(luò)請求方式下對自生成證書的配置了驼抹,如果用的是正規(guī)證書桑孩,配置了這些也不影響,不過其實(shí)已經(jīng)可以自動識別了框冀,強(qiáng)行配置了以后證書失效后還需要更改工程中的證書流椒,到時候可能老版本就有問題了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末明也,一起剝皮案震驚了整個濱河市宣虾,隨后出現(xiàn)的幾起案子惯裕,更是在濱河造成了極大的恐慌,老刑警劉巖绣硝,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜻势,死亡現(xiàn)場離奇詭異,居然都是意外死亡鹉胖,警方通過查閱死者的電腦和手機(jī)握玛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甫菠,“玉大人挠铲,你說我怎么就攤上這事∈缥担” “怎么了市殷?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長刹衫。 經(jīng)常有香客問我醋寝,道長,這世上最難降的妖魔是什么带迟? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任音羞,我火速辦了婚禮,結(jié)果婚禮上仓犬,老公的妹妹穿的比我還像新娘嗅绰。我一直安慰自己,他們只是感情好搀继,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布窘面。 她就那樣靜靜地躺著,像睡著了一般叽躯。 火紅的嫁衣襯著肌膚如雪财边。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天点骑,我揣著相機(jī)與錄音酣难,去河邊找鬼。 笑死黑滴,一個胖子當(dāng)著我的面吹牛憨募,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播袁辈,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼菜谣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尾膊,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤甘磨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后眯停,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體济舆,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年莺债,在試婚紗的時候發(fā)現(xiàn)自己被綠了滋觉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡齐邦,死狀恐怖椎侠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情措拇,我是刑警寧澤我纪,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站丐吓,受9級特大地震影響浅悉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜券犁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一术健、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粘衬,春花似錦荞估、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褂删,卻和暖如春飞醉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背笤妙。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工冒掌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留噪裕,地道東北人蹲盘。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像膳音,于是被迫代替她去往敵國和親召衔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

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