SSL證書的具體認證過程


本文假定讀者已經知道什么是公鑰、什么是私鑰、什么是哈希值。

SSL證書的來源
CA機構有一對配套的公鑰和私鑰,這個私鑰被相當安全的保存在一個神秘的地方,沒有人可以知道,這個公鑰被預裝在了每一台電腦、手機中。
網站申請的證書包括:明文的網址、所有者、證書有效期、網站自己的公鑰......,然后對這些信息計算哈希值(也叫摘要或者指紋),CA用私鑰將這個摘要加密后附在上述明文信息后邊,就構成了網站的證書。加密后的摘要就叫簽名,當你得到信息后,你可以自己計算摘要並和用公鑰解密簽名得到的摘要進行對比,這樣就能確保你收到的證書是CA頒發給網站的。

注意:這里共有兩套公鑰私鑰對,服務器自己有一對,另一對分別在CA機構和大眾的設備上。

證書組成:

---------------
網站域名
所有者
指紋算法
網站公鑰
...
指紋(上述信息的hash)
簽名(用CA的私鑰加密后的指紋)

---------------

驗證證書的方法:
根據證書中的指紋計算算法計算指紋,用電腦上存儲的CA公鑰解密簽名得到證書中存的指紋,比較兩個結果是否相同。

瀏覽器收到證書並驗證后,雙方開始協商對稱加密的算法,對稱加密使用的密碼由瀏覽器生成,並用網站公鑰加密,發給服務器。服務器得到加密后的密碼,用自己的私鑰解密得到真實的密碼。這就保證了即使別人copy了一份服務器的證書,也無法正常通信,因為不知道私鑰。

協商好對稱加密算法和密碼后,隨后的通信都用對稱加密進行。

那么Fiddler抓包是怎么獲取HTTPS加密的數據呢?它裝了一個根證書,是怎么發揮作用的呢?
參考了:https://www.jianshu.com/p/da56ec18979c
本質上就是fiddler做代理,並安裝了自己的CA根證書。代理的意思是,對客戶端來說,他就是服務器,對服務器來說,他就是客戶端,它會假冒自己是客戶端和服務器通信,當服務器要發給客戶端證書時,fiddler根據收到的真證書現場偽造一個假證書,偽造的證書中公鑰變成了它自己的公鑰,對指紋進行簽名的私鑰變成了自己的假CA根證書對應的私鑰。把這個證書發給客戶端,這樣客戶端驗證證書不會發現問題,同時客戶端發送的對稱加密密碼fiddler用自己的私鑰也能解密。
fiddler收到后,先解密信息,再用服務器真正的公鑰加密,發給服務器。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM