1. 什么是 HTTPS
HTTP 加上加密處理和認(rèn)證以及完整性保護(hù)后即是 HTTPS。
它是為了解決 HTTP 存在的安全性問題,而衍生的協(xié)議,那使用 HTTP 的缺點(diǎn)有:
1.通信使用明文可能會(huì)被竊聽
2.不驗(yàn)證通信方的身份可能遭遇偽裝
3.無法驗(yàn)證報(bào)文完整性,可能已遭篡改
HTTPS 并非是一種新協(xié)議,只是 HTTP 通信接口部分用 SSL 和 TLS 協(xié)議代替。通常,HTTP 是直接跟 TCP 通信,當(dāng)使用了 SSL 后,則變成先和 SSL 通信,再有 SSL 和 TCP 通信。簡而言之,HTTPS 是身披 SSL 協(xié)議的這層外殼的 HTTP。
補(bǔ)充下,SSL 協(xié)議是獨(dú)立于 HTTP 的協(xié)議,所以運(yùn)行在應(yīng)用層的其他協(xié)議,如 Telnet、SMTP 均可以配合 SSL 協(xié)議使用,所以也說 SSL 協(xié)議是應(yīng)用最廣泛的網(wǎng)絡(luò)安全技術(shù)。
HTTPS 安全可靠,為啥不一致使用 HTTPS 呢?
1.與純文本通信相比,加密通信會(huì)消耗更多 CPU 和內(nèi)存資源。
2.購買證書也是一筆不小的開銷。
3.HTTPS 比 HTTP 要慢 2-100 倍。這是因?yàn)?SSL 慢,一種是通信慢,出去 TCP 連接、發(fā)送 HTTP 請(qǐng)求/響應(yīng)外,還必須有 SSL 通信,整體上通信量增加了。 另一種是,大量消耗 CPU 和內(nèi)存等資源,導(dǎo)致處理熟讀變慢,這是因?yàn)?SSL 必須進(jìn)行加密,通常使用 SSL 加速器來改善問題,但實(shí)際上沒有根本性的解決方法。
下面一起看下 HTTPS 請(qǐng)求的全過程詳解。
2. 安全通信機(jī)制
1.流程圖
2.?
3.?
安全通信機(jī)制流程詳解:
1.客戶端發(fā)送 https 請(qǐng)求,把自身支持的秘鑰算法套件(SSL 指定版本、加密組件列表)發(fā)送給服務(wù)器
2.服務(wù)器判斷自身是否支持該算法套件,如果支持則返回證書信息(本質(zhì)為公鑰,包含了證書頒發(fā)機(jī)構(gòu),網(wǎng)址,過期時(shí)間等) ,否則斷開連接,
3.客戶端解析證書(通過 TLS 協(xié)議來完成),驗(yàn)證證書是否有效。如果異常,則會(huì)提示是否安裝證書,常見的就是瀏覽器搜索欄左側(cè)出現(xiàn)“X”告警按鈕等。
4.如果證書有效、或者是授信安裝證書后,開始傳送加密信息(用證書加密后的隨機(jī)值,供加解密使用)
5.服務(wù)端通過私鑰解密加密信息,得到客戶端發(fā)送來的隨機(jī)值,然后把內(nèi)容通過該值進(jìn)行對(duì)稱加密。這樣一來,除非知道私鑰,否則是無法獲取加密內(nèi)容的。
6.服務(wù)端返回加密后的內(nèi)容
7.客戶端通過前面提到的隨機(jī)值對(duì)加密信息進(jìn)行解密
3. 證書驗(yàn)證過程
SSL 證書中包含的具體內(nèi)容有證書的頒發(fā)機(jī)構(gòu)、有效期、公鑰、證書持有者、簽名,通過第三方的校驗(yàn)保證了身份的合法
1.檢驗(yàn)基本信息:首先瀏覽器讀取證書中的證書所有者、有效期等信息進(jìn)行一一校驗(yàn)
2.校驗(yàn) CA 機(jī)構(gòu):瀏覽器開始查找操作系統(tǒng)中已內(nèi)置的受信任的證書發(fā)布機(jī)構(gòu) CA,與服務(wù)器發(fā)來的證書中的頒發(fā)者 CA 比對(duì),用于校驗(yàn)證書是否為合法機(jī)構(gòu)頒發(fā);如果找不到,瀏覽器就會(huì)報(bào)錯(cuò),說明服務(wù)器發(fā)來的證書是不可信任的。
3.解密證書:如果找到,那么瀏覽器就會(huì)從操作系統(tǒng)中取出 頒發(fā)者 CA 的公鑰,然后對(duì)服務(wù)器發(fā)來的證書里面的簽名進(jìn)行解密
4.比對(duì) hash 值:瀏覽器使用相同的 hash 算法計(jì)算出服務(wù)器發(fā)來的證書的 hash 值,將這個(gè)計(jì)算的 hash 值與證書中簽名做對(duì)比
5.對(duì)比結(jié)果一致,則證明服務(wù)器發(fā)來的證書合法,沒有被冒充
6.此時(shí)瀏覽器就可以讀取證書中的公鑰,用于后續(xù)加密了
4. 擴(kuò)展:CA 證書
CA 是證書頒發(fā)機(jī)構(gòu)的簡稱,它會(huì)給自己簽發(fā)一個(gè)根證書 Root CA,并且 CA 會(huì)通過根證書來簽發(fā)中間證書,授權(quán)中間證書頒發(fā)機(jī)構(gòu)簽發(fā)證書的權(quán)限,最后由中間證書頒發(fā)機(jī)構(gòu)向用戶簽發(fā)用戶證書。之所以多一層中間證書是為了保護(hù)根證書,減少根證書被攻擊或者被破解的風(fēng)險(xiǎn)。當(dāng)然中間證書可能不止一個(gè)。因此通常用戶收到的證書是 3 個(gè):根證書、中間證書、用戶證書。事實(shí)上,申請(qǐng)到的證書只是用戶證書,其他 2 個(gè)很早就被簽發(fā)了。
瀏覽器為何新任 CA 證書呢?
因?yàn)?CA 是被 WebTrust 信任的第三方組織,且只有通過 WebTrust 國際安全審計(jì)認(rèn)證的證書頒發(fā)機(jī)構(gòu) CA,其簽發(fā)的證書才會(huì)被各大瀏覽器信任。根證書庫包含瀏覽器信任的證書頒發(fā)機(jī)構(gòu) CA 的根證書,有的瀏覽器會(huì)自建根證書庫,比如 Mozilla Firefox,有的瀏覽器會(huì)使用其他瀏覽器的根證書庫。
瀏覽器如何校驗(yàn)證書合法性呢?
由于用戶證書被中間證書信任,而中間證書被根證書信任,根證書又被瀏覽器信任,這樣一個(gè)完整的證書鏈?zhǔn)沟脼g覽器可以在根證書庫內(nèi)一次檢索用戶證書、中間證書和根證書,如果能匹配到根證書,那么這一信任鏈上的所有證書都是合法的。
5. 擴(kuò)展:openssl 生成證書
以生成 CA 根證書為例:
#1.準(zhǔn)備ca配置文件,得到ca.conf vimca.conf #2.生成ca秘鑰,得到ca.key opensslgenrsa-outca.key4096 #3.生成ca證書簽發(fā)請(qǐng)求,得到ca.csr opensslreq -new -sha256 -outca.csr -keyca.key -configca.conf #4.生成ca根證書,得到ca.crt opensslx509 -req -days3650 -inca.csr -signkeyca.key -outca.crt
6.總結(jié)
至此一篇文章讀懂了 Https 協(xié)議全過程,最后匯總下 https 的知識(shí)點(diǎn)。
1.HTTP 加上加密處理和認(rèn)證以及完整性保護(hù)后是 HTTPS。
2.HTTPS 是身披 SSL 外殼的 HTTP
3.相互校驗(yàn)秘鑰的公開秘鑰加密技術(shù)
4.證明公開秘鑰正確性的證書
京東云發(fā)免費(fèi)SSL證書啦!?。?/p>
TrustAsiaDV單域名90天0元!快速頒發(fā),經(jīng)濟(jì)實(shí)惠,保護(hù)網(wǎng)站數(shù)據(jù)安全,適合個(gè)人/企業(yè)網(wǎng)站及建站開發(fā)測(cè)試使用。
審核編輯 黃宇
-
數(shù)據(jù)加密
+關(guān)注
關(guān)注
0文章
50瀏覽量
12694 -
https
+關(guān)注
關(guān)注
0文章
51瀏覽量
6092
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論