HTTPS 概述

本文借鑒于: http://www.cnblogs.com/oc-bowen/p/5896041.html

最近研究一些關于https的使用汤徽,看了下一些相關資料,主要分為三個部分

1. HTTPS 簡要原理

2. 數學證書的內容讨便,生產以及驗證

3.iOS上對證書鏈的驗證

HTTPS 概要

HTTPS 是運行在 TLS/SSL 之上的 HTTP,與普通的 HTTP 相比啦撮,在數據傳輸的安全性上有很大的提升苟呐。

要了解它安全性的巧妙之處,需要先簡單地了解對稱加密非對稱加密的區(qū)別:

對稱加密只有一個密鑰坝撑,加密和解密都用這個密鑰静秆;

非對稱加密有公鑰和私鑰,私鑰加密后的內容只有公鑰才能解密巡李,公鑰加密的內容只有私鑰才能解密抚笔。

為了提高安全性,我們常用的做法是使用對稱加密的手段加密數據侨拦∈獬龋可是只使用對稱加密的話,雙方通信的開始總會以明文的方式傳輸密鑰。那么從一開始這個密鑰就泄露了膨蛮,談不上什么安全叠纹。所以

TLS/SSL 在握手的階段,結合非對稱加密的手段敞葛,保證只有通信雙方才知道對稱加密的密鑰誉察。大概的流程如下:

https是運行在TLS/SSL之上的HTTP,與普通的HTTP相比制肮,在數據傳輸的安全性上有很大的提升冒窍。要了解它的安全性的巧妙之處递沪,

HTTPS

就是HTTP協(xié)議添加了一層SSL協(xié)議加密的處理豺鼻,SSL證書就是遵守SSL協(xié)議,由受信任的數字證書頒發(fā)機構CA,在驗證服務器身份后頒發(fā)款慨,這是需要花錢滴儒飒,簽發(fā)后的證書作為公鑰一般放在服務器的根目錄下的,便于客戶端請求返回給客戶端檩奠,私鑰在服務器的內部中心保存桩了,用于解密公鑰。

HTTPS客戶端和服務器交互過程:

1.客戶端發(fā)送請求埠戳,服務器返回公鑰給客戶端井誉;

2.客戶端生產對稱加密秘鑰,用公鑰對其進行加密后整胃,返回給服務器

3.服務器收到后颗圣,利用私鑰解開后得帶對稱加密秘鑰,保存

4.之后的交互都使用對稱加密后的數據進行交互

遇到是CA機構頒發(fā)的正經證書屁使,我們直接可以用AFNetworking 直接請求就OK在岂,它內部幫我們封裝好了https的請求方式,

manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];

簡單來說蛮寂,就是你本可以修改AFN這個設來允許客戶端接受服務器的任何證書蔽午,但是這么做有個問題,就是你無法驗證證書是你的服務器后端的證書酬蹋,給中間人攻擊及老,即通過重定向路由來分析偽造你的服務器端打開了大門。

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];securityPolicy.allowInvalidCertificates =YES;

解決方法:AFNetworking

是運行內嵌證書的范抓,通過內嵌證書写半,AFNetworking就通過對比服務器端證書,內嵌證書尉咕,站點域名是否一直來驗證連接的服務器是否正確叠蝇,由于CA證書是通過站點域名進行驗證的,如果你的服務器后端有綁定的域名,這是最方便的悔捶。將你的服務器端證書铃慷,如果是pem格式的,用下面的命令轉成cer格式蜕该。

openssl x509 -in <你的服務器證書>.pem -outform der -out server.cer

然后將生成的server.cer文件犁柜,如果有自建ca,再加上ca的cer格式證書堂淡,引入到app的bundle里馋缅,AFNetworking在

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy AFSSLPinningModeCertificate];

或者

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy AFSSLPinningModePublicKey];

會自動掃描bundle中.cer的文件,并引入绢淀,這樣就可以通過自簽證書來驗證服務器唯一性了萤悴。

AFSecurityPolicy分三種驗證模式:

AFSSLPinningModeNone

這個模式表示不做SSL pinning,

只跟瀏覽器一樣在系統(tǒng)的信任機構列表里驗證服務端返回的證書皆的。若證書是信任機構簽發(fā)的就會通過覆履,若是自己服務器生成的證書就不會通過。

AFSSLPinningModeCertificate

這個模式表示用證書綁定方式驗證證書费薄,需要客戶端保存有服務端的證書拷貝硝全,這里驗證分兩步,第一步驗證證書的域名有效期等信息楞抡,第二步是對比服務端返回的證書跟客戶端返回的是否一致述召。

AFSSLPinningModePublicKey

這個模式同樣是用證書綁定方式驗證秽浇,客戶端要有服務端的證書拷貝阿纤,

只是驗證時只驗證證書里的公鑰涯穷,不驗證證書的有效期等信息。只要公鑰是正確的柱恤,就能保證通信不會被竊聽数初,因為中間人沒有私鑰,無法解開通過公鑰加密的數據梗顺。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末泡孩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子寺谤,更是在濱河造成了極大的恐慌仑鸥,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件变屁,死亡現(xiàn)場離奇詭異眼俊,居然都是意外死亡,警方通過查閱死者的電腦和手機粟关,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門疮胖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事澎灸≡喝” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵性昭,是天一觀的道長拦止。 經常有香客問我,道長糜颠,這世上最難降的妖魔是什么汹族? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮其兴,結果婚禮上顶瞒,老公的妹妹穿的比我還像新娘。我一直安慰自己忌警,他們只是感情好搁拙,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布秒梳。 她就那樣靜靜地躺著法绵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酪碘。 梳的紋絲不亂的頭發(fā)上朋譬,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音兴垦,去河邊找鬼徙赢。 笑死,一個胖子當著我的面吹牛探越,可吹牛的內容都是我干的狡赐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼钦幔,長吁一口氣:“原來是場噩夢啊……” “哼枕屉!你這毒婦竟也來了?” 一聲冷哼從身側響起鲤氢,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤搀擂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后卷玉,有當地人在樹林里發(fā)現(xiàn)了一具尸體哨颂,經...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年相种,在試婚紗的時候發(fā)現(xiàn)自己被綠了威恼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖箫措,靈堂內的尸體忽然破棺而出缭黔,到底是詐尸還是另有隱情,我是刑警寧澤蒂破,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布馏谨,位于F島的核電站,受9級特大地震影響附迷,放射性物質發(fā)生泄漏惧互。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一喇伯、第九天 我趴在偏房一處隱蔽的房頂上張望喊儡。 院中可真熱鬧,春花似錦稻据、人聲如沸艾猜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匆赃。三九已至,卻和暖如春今缚,著一層夾襖步出監(jiān)牢的瞬間算柳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工姓言, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瞬项,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓何荚,卻偏偏與公主長得像囱淋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子餐塘,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內容