iOS設(shè)置SSL證書鋼釘

寫在前面的話

在iOS9之前公司就用了HTTPS蕴坪,iOS9蘋果把所有的HTTP請(qǐng)求都改為HTTPS了,HTTPS也變成了趨勢(shì)睹晒。iOS9系統(tǒng)發(fā)送的網(wǎng)絡(luò)請(qǐng)求將統(tǒng)一使用TLS 1.2 SSL毅否。采用TLS 1.2 協(xié)議刑桑,目的是 強(qiáng)制增強(qiáng)數(shù)據(jù)訪問安全,而且系統(tǒng) Foundation 框架下的相關(guān)網(wǎng)絡(luò)請(qǐng)求譬淳,將不再默認(rèn)使用 Http 等不安全的網(wǎng)絡(luò)協(xié)議档址,而默認(rèn)采用 TLS 1.2。

Apple讓你的HTTP采用SSL/TLS協(xié)議邻梆,就是讓你從HTTP轉(zhuǎn)到HTTPS守伸。

不使用SSL/TLS的HTTP通信,就是不加密的通信浦妄!

所有信息明文傳播尼摹,帶來了三大風(fēng)險(xiǎn):
  • 竊聽風(fēng)險(xiǎn)(eavesdropping):第三方可以獲知通信內(nèi)容。
  • 篡改風(fēng)險(xiǎn)(tampering):第三方可以修改通信內(nèi)容剂娄。
  • 冒充風(fēng)險(xiǎn)(pretending):第三方可以冒充他人身份參與通信蠢涝。
SSL/TLS協(xié)議是為了解決這三大風(fēng)險(xiǎn)而設(shè)計(jì)的,希望達(dá)到:
  • 所有信息都是加密傳播阅懦,第三方無法竊聽和二。
  • 具有校驗(yàn)機(jī)制,一旦被篡改耳胎,通信雙方會(huì)立刻發(fā)現(xiàn)儿咱。
  • 配備身份證書庭砍,防止身份被冒充。

https原理

HTTPS在傳輸數(shù)據(jù)之前需要客戶端(瀏覽器)與服務(wù)端(網(wǎng)站)之間進(jìn)行一次握手混埠,在握手過程中將確立雙方加密傳輸數(shù)據(jù)的密碼信息怠缸。客戶端和服務(wù)端建立一個(gè)連接钳宪,服務(wù)端返回一個(gè)證書揭北,客戶端里存有各個(gè)受信任的證書機(jī)構(gòu)根證書,用這些根證書對(duì)服務(wù)端 返回的證書進(jìn)行驗(yàn)證吏颖,經(jīng)驗(yàn)證如果證書是可信任的搔体,就生成一個(gè)pre-master secret,用這個(gè)證書的公鑰加密后發(fā)送給服務(wù)端半醉,服務(wù)端用私鑰解密后得到pre-master secret疚俱,再根據(jù)某種算法生成master secret,客戶端也同樣根據(jù)這種算法從pre-master secret生成master secret缩多,隨后雙方的通信都用這個(gè)master secret對(duì)傳輸數(shù)據(jù)進(jìn)行加密解密呆奕。

證書

NSURLSession 支持 cer 格式的證書文件,但是一般從管理員手里拿到的都是 crt 格式的證書衬吆,需要先安裝到系統(tǒng)梁钾,在用鑰匙串導(dǎo)出 cer 格式證書。

實(shí)現(xiàn)

如果使用AFNetworking逊抡,那么實(shí)現(xiàn)起來還是姆泻,首先把 cer 格式的證書拖到工程里。
然后新建AFHTTPRequestOperationManager就好了

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
     
securityPolicy.allowInvalidCertificates = YES;

manager.securityPolicy = securityPolicy;`
AFSecurityPolicy這個(gè)類是AFN的設(shè)置SSL鋼釘?shù)念惷暗眨?種驗(yàn)證方式:
  1. AFSSLPinningModeNone: 這個(gè)模式表示不做SSL pinning拇勃,只跟瀏覽器一樣在系統(tǒng)的信任機(jī)構(gòu)列表里驗(yàn)證服務(wù)端返回的證書。若證書是信任機(jī)構(gòu)簽發(fā)的就會(huì)通過孝凌,若是自己服務(wù)器生成的證書潜秋,這里是不會(huì)通過的。(這個(gè)模式是不安全的)
  2. AFSSLPinningModePublicKey: 代表客戶端會(huì)將服務(wù)器端返回的證書與本地保存的證書中胎许,PublicKey的部分進(jìn)行校驗(yàn)峻呛;如果正確,才繼續(xù)進(jìn)行辜窑。
  3. AFSSLPinningModeCertificate: 代表客戶端會(huì)將服務(wù)器端返回的證書和本地保存的證書中的所有內(nèi)容钩述,包括PublicKey和證書部分,全部進(jìn)行校驗(yàn)穆碎;如果正確牙勘,才繼續(xù)進(jìn)行。

2和3都需要把證書內(nèi)置在 app Bundle中。
一般情況使用AFSSLPinningModePublicKey就好了方面,AFN的方法是讀取app中所有.cer后綴的文件就行匹配放钦。
如果直接設(shè)置AFSSLPinningModeNone,HTTPS也是能正常訪問的恭金,但是就沒有校驗(yàn)證書操禀,失去HTTPS的意義。
簡(jiǎn)單說:HTTP+SSL/TLS+TCP = HTTPS横腿,只有證書匹配才會(huì)完成服務(wù)器請(qǐng)求颓屑,得到數(shù)據(jù)。

參考資料
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末耿焊,一起剝皮案震驚了整個(gè)濱河市揪惦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌罗侯,老刑警劉巖器腋,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異钩杰,居然都是意外死亡纫塌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門榜苫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來护戳,“玉大人翎冲,你說我怎么就攤上這事垂睬。” “怎么了抗悍?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵驹饺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我缴渊,道長(zhǎng)赏壹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任衔沼,我火速辦了婚禮蝌借,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘指蚁。我一直安慰自己菩佑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布凝化。 她就那樣靜靜地躺著稍坯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搓劫。 梳的紋絲不亂的頭發(fā)上瞧哟,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天混巧,我揣著相機(jī)與錄音,去河邊找鬼勤揩。 笑死咧党,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雄可。 我是一名探鬼主播凿傅,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼数苫!你這毒婦竟也來了聪舒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤虐急,失蹤者是張志新(化名)和其女友劉穎箱残,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體止吁,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡被辑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敬惦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盼理。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖俄删,靈堂內(nèi)的尸體忽然破棺而出宏怔,到底是詐尸還是另有隱情,我是刑警寧澤畴椰,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布臊诊,位于F島的核電站,受9級(jí)特大地震影響斜脂,放射性物質(zhì)發(fā)生泄漏抓艳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一帚戳、第九天 我趴在偏房一處隱蔽的房頂上張望玷或。 院中可真熱鬧,春花似錦片任、人聲如沸偏友。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽约谈。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棱诱,已是汗流浹背泼橘。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迈勋,地道東北人炬灭。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像靡菇,于是被迫代替她去往敵國(guó)和親重归。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • 一厦凤、作用 不使用SSL/TLS的HTTP通信鼻吮,就是不加密的通信。所有信息明文傳播较鼓,帶來了三大風(fēng)險(xiǎn)椎木。 (1)竊聽風(fēng)險(xiǎn)...
    XLsn0w閱讀 10,482評(píng)論 2 44
  • 原文地址 http://blog.csdn.net/u012409247/article/details/4985...
    0fbf551ff6fb閱讀 3,513評(píng)論 0 13
  • 互聯(lián)網(wǎng)的通信安全,建立在SSL/TLS協(xié)議之上博烂。 本文簡(jiǎn)要介紹SSL/TLS協(xié)議的運(yùn)行機(jī)制香椎。文章的重點(diǎn)是設(shè)計(jì)思想和...
    拉肚閱讀 2,617評(píng)論 0 6
  • 1.OkHttp源碼解析(一):OKHttp初階2 OkHttp源碼解析(二):OkHttp連接的"前戲"——HT...
    隔壁老李頭閱讀 20,813評(píng)論 24 176
  • 別后不知君可好,漸行漸遠(yuǎn)漸寂寥禽篱。 煙畜伐。 我不喜歡。但卻又不能否認(rèn)它確實(shí)是個(gè)好東西躺率。 比如說我在公共廁所里做緊急任務(wù)...
    是蘿卜啊閱讀 537評(píng)論 2 1