什么是https
瀏覽器訪問web應(yīng)用中使用到http協(xié)議和ssl或者tsl協(xié)議的組合稱為https妇押。https在原有http協(xié)議的基礎(chǔ)上結(jié)合ssl或者tsl為我們提供安全的訪問機制。http屬于應(yīng)用層協(xié)議碌廓,直接與tcp交互進行通訊敬锐。當(dāng)安全要求比較高的情況下背传,需要用到tsl或者ssl協(xié)議,此時http先與ssl進行交互台夺,再由ssl與tcp交互完成通訊径玖。所以https也稱為身披ssl協(xié)議的http。
為什么需要https
為什么需要https颤介,因為http無法保證通訊的安全性梳星。當(dāng)需要傳輸一些比較私密的信息,如銀行卡號滚朵、密碼等需要絕對保證安全性的信息時冤灾,http無法滿足需求。http的非安全性主要體現(xiàn)在以下幾個方面辕近。
1. 通訊使用明文韵吨,內(nèi)容不加密,可能會被竊聽移宅;
2. 無法驗證通訊方的身份学赛,因此有可能遭遇偽裝;
3. 無法驗證報文的完整性吞杭,報文有可能被篡改盏浇;
實現(xiàn)https的相關(guān)技術(shù)
1. 加密算法
- 對稱加密
- 非對稱加密
所謂對稱加密即加密和解密使用相同的密碼,數(shù)據(jù)加密標(biāo)準(zhǔn)DES即使用對稱秘鑰體制芽狗。這種加密方式绢掰,最大的問題就是密碼的轉(zhuǎn)交。
所謂非對稱加密童擎,是指加密和解密使用不同的密碼滴劲,加密使用的密碼稱為公鑰,是公開的顾复,解密使用的密碼稱為私鑰班挖,是非公開的。RSA加密算法即是非對稱加密芯砸,這種加密的方式萧芙,目前最大的問題是加密比較耗時给梅。
2. CA
CA是指數(shù)字證書認(rèn)證結(jié)構(gòu),一般是由社會公認(rèn)可信賴的第三方機構(gòu)承擔(dān)双揪。如果有服務(wù)器運營人員需要申請公開秘鑰动羽,CA機構(gòu)將該秘鑰做數(shù)字簽名(這個簽名使用的是CA機構(gòu)的私鑰),然后將這個已簽名的公開密碼放入公鑰證書中形成一份數(shù)字證書渔期。
3. 數(shù)字證書
服務(wù)器公開秘鑰通過CA機構(gòu)進行數(shù)字簽名形成的一個公鑰證書
4. 數(shù)字簽名
簽名是指可以確認(rèn)主體的一個特征运吓,數(shù)字簽名利用非對稱加密算法來達到確認(rèn)主體的目的。首先A主體有一對秘鑰疯趟,A將明文用私鑰加密后發(fā)送給B拘哨,B在接收到密文后用A公開的公鑰進行解密,如果解密成功則可以確定報文的主體是A信峻,因為只有A擁有對應(yīng)的私鑰倦青。
SSL利用以上技術(shù)解決了http的缺陷,保證了以下三點
1. SSL服務(wù)器鑒別
允許用戶證實服務(wù)器的身份站欺。支持SSL功能的瀏覽器維持這個表姨夹,上面有一些可信的認(rèn)證中心CA以及其公鑰纤垂。當(dāng)瀏覽器訪問一個SSL服務(wù)器是矾策,瀏覽器從服務(wù)器得到含有服務(wù)器公鑰的數(shù)字證書。此證書由某一個CA認(rèn)證機構(gòu)頒發(fā)峭沦。因為數(shù)字證書是否CA機構(gòu)進行過數(shù)字簽名的贾虽,此時可以用CA機構(gòu)的公鑰(已在瀏覽器中維護)進行認(rèn)證。如果認(rèn)證通過吼鱼,則可以確定蓬豁,服務(wù)器的身份以及服務(wù)器公鑰的有效性。
2. 加密SSL會話
加密SSL會話菇肃。SSL使用對稱加密和非對稱加密并用的混合加密體制地粪。在確認(rèn)完服務(wù)器身份后,得到服務(wù)器公鑰琐谤,瀏覽器生成一個隨機的密碼串并用服務(wù)器公鑰進行加密蟆技,然后告訴服務(wù)器,以后雙方用此秘鑰進行通訊斗忌。交互秘鑰的過程使用的是非對稱加密质礼,真實的通訊過程使用的是對稱加密,所以整個過程是混合加密织阳。
3. SSL客戶鑒別
SSL客戶鑒別眶蕉。允許服務(wù)器鑒別客戶的身份,當(dāng)有一些非常敏感的信息需要從服務(wù)器發(fā)送給客戶端的時候就需要進行客戶端鑒別唧躲,例如銀行(銀行的U盾就是這個作用)造挽。進行客戶端鑒別碱璃,客戶端同樣需要向CA機構(gòu)申請數(shù)字證書,并進行安裝刽宪,由于數(shù)據(jù)證書的收費原因以及安裝原因厘贼,客戶端證書沒得以推廣。
https實現(xiàn)流程
-
支持SSL協(xié)議的瀏覽器預(yù)裝了大部分可信賴機構(gòu)的CA證書圣拄,Google瀏覽器中可在管理證書中查看CA證書的詳細信息嘴秸。其中最重要的一個是CA證書的公鑰;
image
- 服務(wù)器向CA機構(gòu)申請包含公鑰的數(shù)字證書庇谆,該數(shù)字證書已經(jīng)被CA機構(gòu)的私鑰做過數(shù)字簽名岳掐;
- 當(dāng)瀏覽器通過https訪問服務(wù)器web應(yīng)用的時候,瀏覽器會自動下載服務(wù)器的數(shù)字證書饭耳,然后服務(wù)器找到該證書對應(yīng)CA機構(gòu)的公鑰串述,用來驗證證書是否真實有效,并從證書中得到服務(wù)器的公鑰寞肖。此步驟數(shù)字簽名驗證成功后纲酗,便可確認(rèn)服務(wù)器的身份;
- 瀏覽器生成隨機密碼新蟆,并用公鑰進行加密觅赊,發(fā)送給服務(wù)器(非對稱加密);
- 服務(wù)器接收到密碼后用私鑰解密琼稻,得到隨機密碼吮螺,之后雙方通訊加密過程使用此隨機密碼(對稱加密);
https的優(yōu)缺點
優(yōu)點
- 通信加密處理(秘鑰實現(xiàn))
- 通信方認(rèn)證(證書實現(xiàn))
- 內(nèi)容完整性保護(秘鑰實現(xiàn))
缺點
- https通信需要消耗更多的服務(wù)器和客戶端硬件資源帕翻,導(dǎo)致負載增強鸠补;
- https中使用到的證書需要收費;