HTTPS验证流程
HTTPS驗(yàn)證流程
1.HTTPS簡介
? 由于HTTP在網(wǎng)絡(luò)中是明文傳輸?shù)?#xff0c;所以數(shù)據(jù)在傳輸過程中很容易被截取,這時(shí)就會有一些加密算法及方式出來,比如對稱加密、非對稱加密等方式,在HTTPS中加密其實(shí)是在TCP和HTTP之間加了一層SSL/TLS協(xié)議用于加密。
2.對稱加密
2.1 對稱加密的工作流程
? 對稱加密其實(shí)就是發(fā)送方和接收方都擁有一把相同的密鑰,發(fā)送方在發(fā)送之前會對數(shù)據(jù)通過密鑰進(jìn)行加密,然后傳輸?shù)浇邮辗?#xff0c;接收方會通過密鑰進(jìn)行解密獲取數(shù)據(jù)。
? 在瀏覽器和服務(wù)器之間交互也是這樣的,服務(wù)端擁有這把密鑰,客戶端需要請求服務(wù)端獲取這個(gè)密鑰,獲取到密鑰之后就會按照對稱密鑰加密流程進(jìn)行工作,以下為正常運(yùn)行過程:
2.2 對稱加密的問題
? 在對稱加密中,瀏覽器需要先向服務(wù)器請求獲取密鑰,在獲取密鑰的過程中就需要傳輸密鑰,而HTTP本身就是銘文的,密鑰就會暴露在網(wǎng)絡(luò)傳輸當(dāng)中,黑客就會截取這個(gè)密鑰竊取數(shù)據(jù)甚至篡改數(shù)據(jù),如下圖:
3.非對稱加密
3.1 非對稱加密的工作流程
? 非對稱加密是有兩個(gè)密鑰,分別是公鑰和私鑰,公鑰會暴露在網(wǎng)絡(luò)傳輸當(dāng)中,而私鑰只能存在于發(fā)送方,并且非對稱加密中的加密及解密規(guī)則如下:
- 私鑰加密,公鑰可以解密
- 公鑰加密,私鑰可以解密
- 私鑰加密,私鑰可以解密
【注意】:公鑰加密,公鑰不可以解密
? 在瀏覽器和服務(wù)器中,公鑰和私鑰都在服務(wù)器中,瀏覽器需要先請求服務(wù)器獲取公鑰,服務(wù)器發(fā)送數(shù)據(jù)通過私鑰進(jìn)行加密,瀏覽器通過公鑰進(jìn)行解密獲取數(shù)據(jù)。
3.2 非對稱加密的問題
3.2.1 效率低
? 在非對稱加密中需要使用兩個(gè)密鑰,公鑰和私鑰,在非對稱加密中效率就會變得很低,所以一般會選擇先用非對稱加密傳的形式傳輸對稱加密的密鑰,后面使用對稱加密來傳輸。
3.2.2 不安全
? 在非對稱加密中,服務(wù)器公鑰和服務(wù)器私鑰都存在于服務(wù)器端,所以客戶端先要請求服務(wù)器獲取服務(wù)器公鑰,但是,HTTP是明文傳輸?shù)?/strong>,所以在獲取服務(wù)器公鑰時(shí)會被黑客截取,造成安全問題,如下圖:
4.CA機(jī)構(gòu)
? 在非對稱加密中,安全問題主要是服務(wù)器如何向客戶端傳輸服務(wù)器公鑰,所以就有了CA機(jī)構(gòu),這些機(jī)構(gòu)是被信任的,CA機(jī)構(gòu)也是擁有其CA公鑰及CA私鑰的,并且CA公鑰存在于操作系統(tǒng)內(nèi),即當(dāng)安裝操作系統(tǒng)時(shí)就會帶有CA公鑰,因此會使用CA機(jī)構(gòu)來進(jìn)行非對稱加密的驗(yàn)證,如下圖:
4.1 證書
? 服務(wù)器將自己的服務(wù)器公鑰給CA機(jī)構(gòu),CA機(jī)構(gòu)會使用服務(wù)器公鑰及服務(wù)器信息制作證書,證書中幾個(gè)重要信息如下:
-
數(shù)字簽名:CA機(jī)構(gòu)使用CA私鑰對服務(wù)器公鑰進(jìn)行加密,生成數(shù)字簽名
-
摘要:CA機(jī)構(gòu)使用hash算法對服務(wù)器公鑰進(jìn)行加密,生成摘要
-
哈希算法:生成摘要的哈希算法也保存在證書中
證書制作完成之后,CA機(jī)構(gòu)會使用CA私鑰對證書進(jìn)行加密,將加密后的證書發(fā)送給服務(wù)器,流程如下圖:
4.2 服務(wù)器和客戶端驗(yàn)證過程
? 有了CA機(jī)構(gòu)后,服務(wù)器就會把服務(wù)器公鑰存在證書中,通過證書進(jìn)行傳輸,客戶端拿到證書之后會對其進(jìn)行驗(yàn)證,驗(yàn)證過程如下:
5.HTTPS真的安全嗎?
? 根據(jù)上圖可以看到最開始訪問的jd.com是一個(gè)http請求,會被重定向到https的一個(gè)網(wǎng)站,那如果在重定向之前攔截這個(gè)請求,然后仿照一個(gè)和京東一模一樣的網(wǎng)站,是不是就可以釣魚了呢?
【注意】:對于本文的任何意見和建議,歡迎大家在評論區(qū)批評指正。
總結(jié)
- 上一篇: 当出现项目出现,java: 找不到符号,
- 下一篇: 资源分配图RAG的化简