iOS適配HTTPS

自2017年1月1日起,提交到App Store的所有APP必須遵循ATS(App Transport Security)晰骑。也就是說,應(yīng)用內(nèi)的網(wǎng)絡(luò)連接必須使用安全連接。

前言##

HTTPS最初由網(wǎng)景公司使用杠人,在HTTP應(yīng)用層使用SSL協(xié)議保證數(shù)據(jù)安全,故稱HTTPS宋下。隨著SSL的發(fā)展嗡善,演變?yōu)門SL。具體區(qū)別和聯(lián)系可以參照這篇Blog——SSL與TLS 區(qū)別以及介紹学歧。本文主要講述如何在iOS中適配罩引,對于HTTPS原理不多做解釋。這里需要強(qiáng)調(diào)的是TSL 1.2以上的HTTPS是完全正向保密(Perfect Forward Secrecy)的枝笨,而1.2以前的版本則存在以后被破解的風(fēng)險袁铐。這一點(diǎn)涉及到后面的APP配置揭蜒,需要留意。

設(shè)置Info.plist##

為了適配iOS9下的HTTP請求,很多人在Info.plist中做了如下設(shè)置剔桨。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

如今HTTP即將成為歷史,這個設(shè)置也大可以刪掉屉更。
如果你使用TSL 1.2(含)以上的HTTPS連接,是無需設(shè)置的洒缀。如果你使用1.2以下的HTTPS連接瑰谜,還需要做以下設(shè)置。

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>domain-name-string</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>

這里還有一個NSIncludesSubdomains用于配置允許子域名訪問的树绩,可以按需設(shè)置萨脑。

代理中處理證書##

這里使用Swift2.3(與Swift2.2幾乎一樣),日后可能更新Swift3的代碼饺饭。在NSURLSession的delegate里渤早,做如下處理。

func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void) {
    if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust {
        let credential = NSURLCredential(forTrust: challenge.protectionSpace.serverTrust!)
        completionHandler(.UseCredential, credential)
    }
}

func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveResponse response: NSURLResponse, completionHandler: (NSURLSessionResponseDisposition) -> Void) {
    completionHandler(.Allow)
}

Tips##

使用如下指令可以不同參數(shù)下查詢ATS狀態(tài)瘫俊。

? ~ /usr/bin/nscurl --ats-diagnostics --verbose https://apple.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鹊杖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子军援,更是在濱河造成了極大的恐慌仅淑,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胸哥,死亡現(xiàn)場離奇詭異涯竟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)空厌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門庐船,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘲更,你說我怎么就攤上這事筐钟。” “怎么了赋朦?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵篓冲,是天一觀的道長。 經(jīng)常有香客問我宠哄,道長壹将,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任毛嫉,我火速辦了婚禮诽俯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘承粤。我一直安慰自己暴区,他們只是感情好闯团,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仙粱,像睡著了一般房交。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伐割,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天涌萤,我揣著相機(jī)與錄音,去河邊找鬼口猜。 笑死,一個胖子當(dāng)著我的面吹牛透揣,可吹牛的內(nèi)容都是我干的济炎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼辐真,長吁一口氣:“原來是場噩夢啊……” “哼须尚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起侍咱,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤耐床,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后楔脯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撩轰,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年昧廷,在試婚紗的時候發(fā)現(xiàn)自己被綠了堪嫂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡木柬,死狀恐怖皆串,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情眉枕,我是刑警寧澤恶复,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站速挑,受9級特大地震影響谤牡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜梗摇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一拓哟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伶授,春花似錦断序、人聲如沸流纹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漱凝。三九已至,卻和暖如春诸迟,著一層夾襖步出監(jiān)牢的瞬間茸炒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工阵苇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壁公,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓绅项,卻偏偏與公主長得像紊册,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子快耿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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