https安全认证流程简介
本文講述了https加密傳輸的流程
https是采用對稱加密和非對稱加密相結合的方式來進行安全認證的。對稱加密用來加密所要發送的信息,非對稱加密用來傳輸對稱加密的秘鑰算法等信息
數字證書
首先,服務器把他的公鑰和個人信息用Hash算法生成一個消息摘要,這個Hash算法有個好的特點就是只要輸入的數據有一點點變化,那么生成的消息摘要就會發生巨變。?這樣就可以防止別人修改原始的內容。然后再將這個消息摘要通過認證中心(CA)的私鑰進行加密,形成數字簽名。
接著再把數字簽名和原始信息(主機B得公鑰和信息)合并 ,形成一個新的東西,叫做數字證書。
當服務器把這個數字證書發給客戶端時,客戶端用相同的Hash算法對原始信息生成消息摘要,再用CA的公鑰對數字簽名進行解密,得到CA創建消息摘要,然后進行對比,看有沒有改變。如果一樣,說明公鑰沒人改,也就是說此時的公鑰就是服務器的公鑰
?
不過這樣做的前提是得信任CA,這些CA本身也有證書來證明自己的身份,并且CA的信用是像樹一樣分級的,高層的CA給底層的CA做信用背書,而操作系統/瀏覽器中會內置一些頂層的CA的證書,相當于你自動信任了他們。 這些頂層的CA證書一定得安全地放入操作系統/瀏覽器當中,否則世界大亂。你可以打開瀏覽器, 從設置中可以找到“受信任的根證書”
---------------------?
?
HTTPS 加密的過程
如上圖所示
(1)第 ③ 步時,客戶端說:(咱們后續回話采用對稱加密吧,這是對稱加密的算法和對稱密鑰)這段話用公鑰進行加密,然后傳給服務器
(2)服務器收到信息后,用私鑰解密,提取出對稱加密算法和對稱密鑰后,服務器說:(好的)對稱密鑰加密
(3)后續兩者之間信息的傳輸就可以使用對稱加密的方式了
遇到的問題:
(1)客戶端如何獲得公鑰
(2)如何確認服務器是真實的而不是黑客
第四步:獲取公鑰與確認服務器身份
1、獲取公鑰
(1)提供一個下載公鑰的地址,回話前讓客戶端去下載。(缺點:下載地址有可能是假的;客戶端每次在回話前都先去下載公鑰也很麻煩)
(2)回話開始時,服務器把公鑰發給客戶端(缺點:黑客冒充服務器,發送給客戶端假的公鑰)
2、那有木有一種方式既可以安全的獲取公鑰,又能防止黑客冒充呢? ? 那就需要用到終極武器了:SSL 證書
如上圖所示,在第 ② 步時服務器發送了一個SSL證書給客戶端,SSL 證書中包含的具體內容有:
(1)證書的發布機構CA
(2)證書的有效期
(3)公鑰
(4)證書所有者
(5)簽名
3、客戶端在接受到服務端發來的SSL證書時,會對證書的真偽進行校驗,以瀏覽器為例說明如下:
(1)首先瀏覽器讀取證書中的證書所有者、有效期等信息進行一一校驗
(2)瀏覽器開始查找操作系統中已內置的受信任的證書發布機構CA,與服務器發來的證書中的頒發者CA比對,用于校驗證書是否為合法機構頒發?
(3)如果找不到,瀏覽器就會報錯,說明服務器發來的證書是不可信任的。
(4)如果找到,那么瀏覽器就會從操作系統中取出 ?頒發者CA ?的公鑰,然后對服務器發來的證書里面的簽名進行解密
(5)瀏覽器使用相同的hash算法計算出服務器發來的證書的hash值,將這個計算的hash值與證書中簽名做對比
(6)對比結果一致,則證明服務器發來的證書合法,沒有被冒充
(7)此時瀏覽器就可以讀取證書中的公鑰,用于后續加密了。
?
參考鏈接https://www.upyun.com/tech/article/192/1.html?和?
https://blog.csdn.net/shanghx_123/article/details/86505726?
有興趣的小伙伴可直接閱讀此鏈接!!!
總結
以上是生活随笔為你收集整理的https安全认证流程简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 创建Reader_Buffer
- 下一篇: C语言 投票问题