https是http+tls/ssl。因為http是明文傳輸,所以會有安全問題,而tls協議是傳輸層安全協定。在了解tls之前,首先要了解一些常識性的概念
對稱加密演算法就是加密和解密使用的一樣的金鑰進行加解密。
常見的對稱加密演算法有des,aes,現在使用aes較多。如果只是用對稱加密的話,金鑰洩漏則會造成嚴重的後果。
一對公鑰和私鑰,公鑰加密內容只有私鑰可以解開,而金鑰加密內容只有公鑰可以解開。並且僅有公鑰,不能推算出私鑰。如果只是用非對稱加密的話,資料可能會遭到篡改。
為了防止資料被篡改,使用數字簽名可以解決。數字簽名,就是採用摘要演算法對傳輸的資料提取出摘要,並且用自己的私鑰進行加密。這個數字簽名會和報文一起傳送給接收方。
但是還有有問題,如果接收方不能確認你這個公鑰就是來自於傳送方的。因此引入了第三方的認證機構,引入了證書。
首先用公鑰解密,然後計算摘要進行對比,符合則簽名沒問題。
數字證書的出現就是為了解決這個問題。引入乙個可靠的第三方認證機構。
乙個數字證書,包含公鑰,公鑰擁有者的資訊,有效期,ca的數字簽名等。ca的公鑰是公開的,
拿到證書後,首先用公鑰進行解密,驗證數字簽名。驗證成功則簽名未被篡改。
要想清楚tls握手的細節流程,那麼首先要明確tls握手是為了幹什麼,tls握手是為了建立安全的鏈結通道,保證資料傳輸的安全性,不被竊聽和篡改。它使用了非對稱加密演算法和對稱加密演算法。並且通過非對稱加密演算法來產生對稱加密演算法。
一下是乙個以rsa演算法的握手過程。
第一步:client hello,客戶端發起連線請求,並提供支援的加密套間,版本,以及產生乙個隨機數random1.
第二步:server hello,服務端選擇合適的加密套件和版本,產生乙個隨機數random2.
第三步:certificate 服務端將自己的證書傳送給客戶端。
第四步:server hello done 服務端表示server hello結束
第五步:certificate verify 客戶端校驗證書。生成random3,使用random1,random2,random3生成premaster key並使用公鑰進行加密。
第六步:client key exchange,將premaster key傳送給服務端,並使用演算法計算出對稱加密金鑰。服務端收到後,可以將premaster
解密,得到random3,並使用random1,2,3計算出對稱加密金鑰。
第七步:client cipher spec spec,這是乙個通知訊息,客戶端通知服務端,編碼改變:之後的訊息,都通過對稱加密來進行。
第八步:encrypted handshake message
這是乙個finish訊息,表示客戶端握手完成,並且將之前的握手訊息使用協商好的金鑰進行加密,傳送給服務端。服務端收到後,對訊息進行解密,如果能解密成功,則表明雙方是同乙個金鑰。
第九步:change cipher spec
這一步是服務端發出的訊息改變通知。
第十步:encrypted handshacke message
這是服務端發出的finish訊息,使用對稱金鑰,將之前的握手訊息加密傳送給客戶端,拿給客戶端解密。這一步結束之後。tls連線正式建立。
https握手過程
瀏覽器將自己的ssl加密元件 ras加密演算法 對稱加密演算法 hash摘要演算法 金鑰長度 傳送給請求 會從中選出一組加密演算法和hash演算法,並將自己的身份資訊以證書的方式發回瀏覽器。瀏覽器驗證證書的正確性,或者使用者接收了不受信任的證書,瀏覽器會生成一串隨機的密碼,並用證書的公鑰加密,同時使...
HTTPS握手過程
加密方案 非對稱加密 ssl握手過程 伺服器發動 server hello done 的報文通知客戶端,最初階段的ssl握手協商結束。ssl第一次握手結束之後,客戶端解析證書 客戶端的tls完成 如果證書有問題,就發出警告。拿到服務端的公鑰。以 client key exchange 報文作為回應。...
HTTPS和SSL握手過程
https介紹 https http 一組對稱 非對稱和基於證書的加密技術 https是最常見的http安全版本。它得到了很廣泛的應用,所有主要的商業瀏覽器和伺服器都提供https。https將http協議與一組強大的對稱 非對稱和基於證書的加密技術結合在一起,使得https不僅很安全,而且很靈活,...