詳解HTTPS原理

http協(xié)議是目前非常普及的應(yīng)用層傳輸協(xié)議,了解https之前要先知道http的缺點(diǎn).

1.通信使用明文(不加密),內(nèi)容可能被竊聽.(抓包工具可以獲取請(qǐng)求和響應(yīng)內(nèi)容)

2.不驗(yàn)證通訊方的身份,可能遭遇偽裝.(任何人都能發(fā)送請(qǐng)求,不管對(duì)方是誰都會(huì)返回響應(yīng)).


3.無法證明報(bào)文的完整性,可能會(huì)遭篡改.(沒有辦法確認(rèn)發(fā)出的請(qǐng)求/響應(yīng)和接收到的請(qǐng)求/響應(yīng)前后一致)


這些問題不止會(huì)在http上出現(xiàn),在其他未加密的協(xié)議中也會(huì)出現(xiàn)這類問題


HTTP+加密+認(rèn)證+完整性保護(hù) = HTTPS.

為了解決上述問題,需要再http上再加入加密處理和認(rèn)證等機(jī)制.我們把添加了加密和認(rèn)證機(jī)制的http稱之為https(http secure)

HTTPS是身披SSL保護(hù)外衣的HTTP

HTTPS并非應(yīng)用層的一種新協(xié)議,只是http通訊接口部分用SSL(secure socket layer)和TLS(transport layer security)協(xié)議代替.

通常http直接和tcp通信.當(dāng)使用ssl時(shí),則演變成先和ssl通信,再由ssl和tcp通訊.所謂https其實(shí)就是身披ssl保護(hù)外衣的http.

HTTPS采用混合機(jī)密機(jī)制

在對(duì)ssl了解之前先了解兩種加密技術(shù).

公開密鑰加密(public-key cryptography)->加密算法是公開的,而密鑰是保密的.加密和解密都會(huì)用到密鑰.但反過來說只要持有密鑰就能解密.

共享密鑰加密(common key crypto system)->也被叫做對(duì)密鑰加密.以共享密鑰方式加密時(shí)必須將密鑰也發(fā)給對(duì)方.在互聯(lián)網(wǎng)上轉(zhuǎn)發(fā)密鑰時(shí),如果通信被監(jiān)聽那么密鑰就會(huì)落入攻擊者之手,另外還得設(shè)法安全的保管接收到的密鑰.

使用兩把密鑰的公開密鑰加密

公開密鑰加密使用一對(duì)非對(duì)稱的密鑰.一把私鑰一把公鑰.私鑰不能讓任何人知道,公鑰任何人都能獲得.也就是發(fā)送密文一方使用對(duì)方的公鑰進(jìn)行加密處理,對(duì)方收到被加密的信息后,再使用自己的的私鑰進(jìn)行解密.利用這種方法不需要發(fā)送用來解密的私鑰,也不必?fù)?dān)心密鑰被盜走.

https采用共享密鑰加密和公開密鑰加密兩者并用的混合加密機(jī)制.若密鑰能夠?qū)崿F(xiàn)安全交換,那么有可能會(huì)考慮僅適用公開密鑰加密來通信.但是公開密鑰加密與共享密鑰加密相比,其處理速度要慢.

所以應(yīng)充分利用兩者各有的有事,將多種方法組合起來用于通信.在交換密鑰環(huán)節(jié)適用公開密鑰加密方式,之后的建立通信交換報(bào)文階段則適用共享加密方式.

證明公開密鑰正確性的證書

公開密鑰加密方式存在一些問題,無法證實(shí)公鑰真?zhèn)?為了解決這個(gè)問題,可以使用由數(shù)字證書認(rèn)證機(jī)構(gòu)(CA,certificate authority)和其相關(guān)頒發(fā)的公鑰證書.


可證明組織真實(shí)性的EV SSL證書

證書的一個(gè)作用是用來證明作為通信乙方的服務(wù)器是否規(guī)范,另外一個(gè)作用就是確認(rèn)對(duì)方服務(wù)器背后運(yùn)營的企業(yè)是否真實(shí)存在.擁有該特性的證書就是EV SSL證書(extended validation SSL certificate)

EV SSL證書是基于國際標(biāo)準(zhǔn)的認(rèn)證指導(dǎo)方針頒發(fā)的證書.通過認(rèn)證的web網(wǎng)站能夠獲得更高的認(rèn)可度.

持有EV SSL證書的web網(wǎng)站瀏覽器地址欄處的背景是綠色的.點(diǎn)擊后可以查看詳情

用以確認(rèn)客戶端的客戶端證書

HTTPS中還可以使用客戶端證書.以客戶端證書進(jìn)行客戶端認(rèn)證,證明服務(wù)器正在通信的對(duì)方始終是預(yù)料之內(nèi)的客戶端,起作用跟服務(wù)器證書如出一轍.

想獲取證書時(shí),用戶需要自行安裝客戶端證書,證書是付費(fèi)購買的,且每張證書對(duì)應(yīng)到每位用戶也就意味著需支付和用戶數(shù)對(duì)等的費(fèi)用.另外要讓不同的用戶自行安裝證書,這件事本身也是充滿了挑戰(zhàn).

現(xiàn)狀是,安全性極高的認(rèn)證機(jī)構(gòu)可頒發(fā)客戶端證書但僅用于特殊用途的業(yè)務(wù).比如銀行的網(wǎng)銀就采用客戶端證書.客戶端證書另一個(gè)問題只能證明客戶端實(shí)際存在,而不能用來證明用戶本人的真實(shí).

由自認(rèn)證機(jī)構(gòu)頒發(fā)的證書成為自簽名證書

如果使用openSSL這套開源程序,都可以構(gòu)建一套屬于自己的認(rèn)證機(jī)構(gòu),從而自己給自己頒發(fā)服務(wù)器證書.但該服務(wù)器證書在互聯(lián)網(wǎng)不可作為證書使用.

獨(dú)立構(gòu)建的認(rèn)證機(jī)構(gòu)叫做自認(rèn)證機(jī)構(gòu)頒發(fā)的證書為"自簽名證書"

瀏覽器訪問該服務(wù)器時(shí),會(huì)顯示"無法確認(rèn)連接安全性"或"該網(wǎng)站的安全證書存在問題"等

之所以這樣原因是它無法消除偽裝的可能性.值得信賴的第三方機(jī)構(gòu)介入認(rèn)證,才能讓已植入在瀏覽器內(nèi)的認(rèn)證機(jī)構(gòu)頒布的公鑰發(fā)揮作用,并證明服務(wù)器的真實(shí)性.

ps:中級(jí)認(rèn)證機(jī)構(gòu)的證書,某些瀏覽器會(huì)以正規(guī)的證書來對(duì)待,可有的瀏覽器會(huì)當(dāng)做自簽名證書.

HTTPS的安全通信機(jī)制

為了更好地理解HTTPS,我們觀察一下HTTPS的通信步驟




1.客戶端通過發(fā)送client hello報(bào)文開始SSL通信.報(bào)文中包含客戶端支持的SSL指定版本,加密組件列表(所使用的加密算法 密鑰長度等)

2.服務(wù)器可進(jìn)行SSL通信時(shí),會(huì)議Server Hello報(bào)文作文回應(yīng).報(bào)文中含SSL版本 加密組件.服務(wù)器的加密組件內(nèi)容是從接受客戶端加密組件內(nèi)篩選出來的.

3.之后服務(wù)器發(fā)送certificate報(bào)文.報(bào)文中包好公開密鑰證書.

4.服務(wù)器發(fā)送server hello done報(bào)文通知客戶端.最初階段握手協(xié)商部分結(jié)束.

5.SSL第一次握手結(jié)束后,客戶端以client key exchange報(bào)文作為回應(yīng).報(bào)文包含通信加密中使用的隨機(jī)密碼串.該報(bào)文已用步驟3中的公鑰加密;

6.客戶端繼續(xù)發(fā)送change cipher spec報(bào)文.該報(bào)文會(huì)提示想服務(wù)器,在此報(bào)文之后的通訊會(huì)采用pre-master secret密鑰加密

7.客戶端發(fā)送finished報(bào)文 該報(bào)文包含連接至今前部報(bào)文的整體校驗(yàn)值.這次握手協(xié)商是否成功,要以服務(wù)器是否能夠正確解密該報(bào)文作文判定標(biāo)準(zhǔn).

8.服務(wù)器同樣發(fā)送change cipher spec報(bào)文

9.服務(wù)器同樣發(fā)送finished報(bào)文

10.C&S finishe報(bào)文交換完畢之后,ssl連接就算建立完成.通信會(huì)受到SSL的保護(hù).從此開始進(jìn)行應(yīng)用層的協(xié)議通信,即發(fā)送HTTP響應(yīng)

11.應(yīng)用層協(xié)議通信,即發(fā)送HTTP響應(yīng)

12.最后客戶端斷開連接.斷開連接時(shí),發(fā)送close_notity報(bào)文.上圖做了一些省略

在以上流程中,應(yīng)用層發(fā)送數(shù)據(jù)時(shí)會(huì)附加一種叫做MAC(message authentication code)的報(bào)文摘要.MAC能夠查知報(bào)文是佛遭到篡改.從而保護(hù)報(bào)文的完整性.

到此HTTP的問題基本都已經(jīng)解決啦,那HTTPS就沒有缺點(diǎn)嗎

SSL最大的問題所在就是慢!!


SSL的慢分兩種.一種指通信慢,另一種是指由于大量消耗CPU以及內(nèi)存資源,導(dǎo)致處理速度變慢.

和使用http相比網(wǎng)絡(luò)負(fù)載可能會(huì)變慢2到100倍.出去和TCP連接,發(fā)送HTTP請(qǐng)求&響應(yīng)以外,還必須進(jìn)行SSL通信,因此整體上處理通信量不可避免會(huì)增加.

另一點(diǎn)是SSL必須進(jìn)行加密處理.服務(wù)器和客戶端都要進(jìn)行加密和解密的處理.比起HTTP會(huì)更多的消耗服務(wù)器和客戶端的硬件資源,導(dǎo)致負(fù)載增強(qiáng).

針對(duì)速度變慢這一問題,并沒有根本性的解決方案,我們會(huì)使用SSL加速器(專用服務(wù)器)硬件來改善該問題.該硬件為SSL通信專用硬件,相對(duì)軟件來講,能夠提高數(shù)倍SSL的計(jì)算速度.僅在SSL處理時(shí)發(fā)揮SSL加速器的功效,以分擔(dān)負(fù)載.

為什么不一直使用HTTPS?

目前并非所有內(nèi)容都進(jìn)行加密處理,而是僅在那些需要信息隱藏時(shí)才會(huì)加密,以節(jié)約資源.除此之外購買證書的開銷一室原因之一

ps:SSL證書參考下面的消息;

免費(fèi)的目前有 2 個(gè)

國內(nèi)的:免費(fèi)SSL證書申請(qǐng)

國外的:StartSSL? Certificates & Public Key Infrastructure

備注:其實(shí)誉己,國內(nèi)的這家的根證書赐纱,也是startssl簽發(fā)的类缤,實(shí)際上還是等于是startssl提供的免費(fèi)證書氯析。

便宜的有很多家锈至,這里列舉幾個(gè):

Namecheap:Cheap SSL Certificates from $7.95/yr ? Namecheap.com

還是Namecheap:SSL Certificates. Buy Cheap SSL Certs from $4.99/yr

cheapssl:Cheap SSL Certificates. Buy or Renew Cheapest SSL at $4.80

再補(bǔ)充 2 個(gè)賣便宜 SSL 的:

Gogetssl:https://www.gogetssl.com/domain-validation/comodo-positive-ssl/

Starfieldtech:https://www.starfieldtech.com/

以上來自<圖解HTTP>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市闻鉴,隨后出現(xiàn)的幾起案子炊昆,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異没隘,居然都是意外死亡鹃祖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門湖员,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事拇颅。” “怎么了乔询?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵樟插,是天一觀的道長。 經(jīng)常有香客問我哥谷,道長岸夯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任们妥,我火速辦了婚禮猜扮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘监婶。我一直安慰自己旅赢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布惑惶。 她就那樣靜靜地躺著煮盼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪带污。 梳的紋絲不亂的頭發(fā)上僵控,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音鱼冀,去河邊找鬼报破。 笑死悠就,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的充易。 我是一名探鬼主播梗脾,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼盹靴!你這毒婦竟也來了炸茧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤稿静,失蹤者是張志新(化名)和其女友劉穎梭冠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體改备,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妈嘹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绍妨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片润脸。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖他去,靈堂內(nèi)的尸體忽然破棺而出毙驯,到底是詐尸還是另有隱情,我是刑警寧澤灾测,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布爆价,位于F島的核電站,受9級(jí)特大地震影響媳搪,放射性物質(zhì)發(fā)生泄漏铭段。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一秦爆、第九天 我趴在偏房一處隱蔽的房頂上張望序愚。 院中可真熱鬧,春花似錦等限、人聲如沸爸吮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽形娇。三九已至,卻和暖如春筹误,著一層夾襖步出監(jiān)牢的瞬間桐早,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哄酝,地道東北人所灸。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像炫七,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钾唬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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