概述
HTTPS 無非就是 HTTP + SSL/TLS
而 SSL/TLS 的功能其實(shí)本質(zhì)上是:如何協(xié)商出安全的對稱加密密鑰期犬,以利用此密鑰進(jìn)行后續(xù)通訊的過程河哑。
一、HTTP 為什么不安全
HTTP 由于是明文傳輸龟虎,主要存在三大風(fēng)險(xiǎn):竊聽風(fēng)險(xiǎn)璃谨、篡改風(fēng)險(xiǎn)、冒充風(fēng)險(xiǎn)鲤妥。
二佳吞、SSL/TLS協(xié)議是什么
SSL(Secure Sockets Layer)和TLS(Transport Layer Security)的關(guān)系
就像windows XP和windows 7的關(guān)系,升級后改了個(gè)名字而已棉安。
HTTPS=HTTP+TLS
三底扳、對稱加密:HTTPS 的最終加密形式。
如圖示:使用對稱加密的通信雙方使用同一把密鑰進(jìn)行加解密垂券。
優(yōu)點(diǎn):對稱加密具有加解密速度快花盐,性能高的特點(diǎn)
缺點(diǎn): 無法解決單向?qū)ΨQ密鑰的傳輸泄漏問題
四、非對稱加密:解決單向?qū)ΨQ密鑰的傳輸問題
非對稱加密即加解密雙方使用不同的密鑰菇爪,一把作為公鑰算芯,可以公開的,一把作為私鑰凳宙,不能公開熙揍。
公鑰加密的密文只有私鑰可以解密,私鑰加密的內(nèi)容(私鑰簽名)氏涩,也只有公鑰可以解密(公鑰驗(yàn)簽)届囚。
優(yōu)點(diǎn):解決單向?qū)ΨQ密鑰的傳輸問題
缺點(diǎn): 耗時(shí)(對稱加密算法比非對稱加密算法快大約1500倍)
問題:公鑰如何傳輸?
五是尖、數(shù)字證書:解決公鑰傳輸信任問題
1. 背景
員工入職時(shí)意系,企業(yè)一般會要求提供學(xué)歷證明,顯然不是什么阿貓阿狗的本本都可稱為學(xué)歷饺汹,這個(gè)學(xué)歷必須由第三方權(quán)威機(jī)構(gòu)(Certificate Authority蛔添,簡稱 CA)即教育部頒發(fā)。
證書由站點(diǎn)管理者向 CA 申請,申請的時(shí)候會提交 DNS 主機(jī)名等信息迎瞧,CA 會根據(jù)這些信息生成證書夸溶。
image.png
2. Q&A
Q1:如何驗(yàn)證證書的真實(shí)性,如何防止證書被篡改凶硅?
A1:數(shù)字簽名:私鑰簽名,公鑰驗(yàn)簽缝裁。
Q2:如何解決CA公鑰被調(diào)包的風(fēng)險(xiǎn)?
A2:實(shí)際上此公鑰是存在于 CA 證書上足绅,而此證書(也稱 Root CA 證書)被操作系統(tǒng)信任捷绑,內(nèi)置在操作系統(tǒng)上的,無需傳輸编检。
Q3:charles 這些中間人為啥能抓到明文的包呢胎食?
A3:charles 這些中間人能抓取 HTTPS 包的前提是信任它們的 CA 證書扰才,然后就可以通過替換證書的方式進(jìn)行瞞天過海允懂。
五、什么是證書信任鏈衩匣?
背景:
前文說了蕾总,我們可以向 CA 申請證書,但全世界的頂級 CA(Root CA) 就那么幾個(gè)琅捏,每天都有很多人要向它申請證書生百,它也忙不過來啊,怎么辦呢柄延?繼續(xù)往下授權(quán)啊蚀浆。
一級 CA 讓 Root CA 來簽名認(rèn)證,二級 CA 讓一級 CA 來簽名認(rèn)證,Root CA 沒有人給他簽名認(rèn)證搜吧,只能自己證明自己了市俊,這個(gè)證書就叫「自簽名證書」或者「根證書」(系統(tǒng)內(nèi)置)
舉例:
證書信任鏈現(xiàn)在我們看看如果站點(diǎn)申請的是二級 CA 頒發(fā)的證書,client 收到之后會如何驗(yàn)證這個(gè)證書呢滤奈,實(shí)際上 service 傳了傳給二級 CA 的證書外摆昧,還會把證書信任鏈也一起傳給客戶端,這樣客戶端會按如下步驟進(jìn)行驗(yàn)證:
- 瀏覽器就使用信任的根證書(根公鑰)解析證書鏈的根證書得到一級證書的公鑰+摘要驗(yàn)簽蜒程;
- 拿一級證書的公鑰解密一級證書绅你,拿到二級證書的公鑰和摘要驗(yàn)簽;
- 再然后拿二級證書的公鑰解密 server 傳過來的二級證書昭躺,得到服務(wù)器的公鑰和摘要驗(yàn)簽忌锯,驗(yàn)證過程就結(jié)束了。