https原理简述
為什么要使用https?
因為http協議下,數據都是明文傳輸的,容易被截獲、修改轉發。
https實現原理:
概要:通過非對稱加密進行交互協商獲得對稱加密算法與密鑰,使用協商獲得的加密算法與秘鑰對交互數據加密
- 1)瀏覽器將自己支持的一套加密規則請求服務器。?
- 2)服務器從中選出一組加密算法與HASH算法,并將自己的身份信息以證書的形式發回給瀏覽器。證書里面包含了網站地址,加密公鑰,以及證書的頒發機構等信息。??
- 3)瀏覽器獲得網站證書之后瀏覽器要做以下工作:?
- ?驗證證書的合法性(頒發證書的機構是否合法,證書中包含的網站地址是否與正在訪問的地址一致等),如果證書受信任,則瀏覽器欄里面會顯示一個小鎖頭,否則會給出證書不受信的提示。??
- ?如果證書受信任,或者是用戶接受了不受信的證書,瀏覽器會生成一串隨機數的密碼,并用證書中提供的公鑰加密。?
- ??使用約定好的HASH算法計算握手消息,并使用生成的隨機數對消息進行加密,最后將之前生成的所有信息請求給服務器。?
- ??4)服務器接收瀏覽器發來的數據之后要做以下的操作:
- 使用自己的私鑰將信息解密取出密碼,使用密碼解密瀏覽器發來的握手消息,并驗證HASH是否與瀏覽器發來的一致。??
- 使用密碼加密一段握手消息,發送給瀏覽器。?
- ??5)瀏覽器解密并計算握手消息的HASH,如果與服務端發來的HASH一致,此時握手過程結束,之后所有的通信數據將由之前瀏覽器生成的隨機密碼并利用對稱加密算法進行加密。
疑問:
為什么最終使用對稱加密算法加密數據?
因為非對稱加密算法加密數據的消耗遠遠大于對稱加密算法
為什么需要ca證書與數字簽名?
因為對數據進行加密,客戶端與服務器之間必須要一個協商過程:
使用對稱加密則要協商加密算法與密鑰,無法保證協商的過程的數據安全
使用非對稱加密無法保證公鑰傳遞安全
使用第三方證書為什么可以避免這個問題?
因為使用第三方證書后,避免了公鑰的傳遞這個問題。公鑰內置在瀏覽器的ca證書列表里。(瀏覽求通過服務器發送過來ca證書去匹配瀏覽器內置的ca上級證書獲得公鑰驗證簽名)
瀏覽器是如何驗證ca證書與數字簽名?
瀏覽器收到服務器發送的證書后,需要驗證其真實性。而證書的簽名是通過簽名算法和上級CA的私鑰生成的,并非很多文章里簡單說的靠CA私鑰生成。瀏覽器需要用上級CA的公鑰才能解密簽名,并與生成的指紋對比。(上級CA即頒發證書的第三方機構,上級CA證書是內置于瀏覽器或系統)
轉載于:https://www.cnblogs.com/dudeyouth/p/10004919.html
總結
- 上一篇: 一些汇编中的 trick
- 下一篇: 一站式学习Redis 从入门到高可用分布