最經看了一些關於https的東西,比較亂,現在做個總結(不一定正確,而且很多細節沒挖掘,只是目前的乙個粗淺認識)
[b]https流程圖[/b]
[img]
[b]從這個圖我們可以看出:[/b]
由於瀏覽器和伺服器之間對資料傳輸進行了對稱加密,從而保證了資料的安全性,但是現在有乙個問題,如何保證瀏覽器生成的隨機數(對稱加密的金鑰)能安全的傳遞給伺服器端?
如果這把金鑰被第三方竊取,那麼瀏覽器和伺服器之間傳遞的資料就能被輕而易舉的解密,進而造成危險.
我們可以這麼做:
採用非對稱加密的方式,讓瀏覽器安全的把對稱加密的金鑰傳送給伺服器. 那什麼是非對稱加密呢? 假如有兩把鑰匙乙個叫公鑰,乙個叫私鑰,用公鑰加密的資料只有私鑰才能解開,那麼只要伺服器存留乙份私鑰,把公鑰發個瀏覽器,就可以安全傳輸資料.
問題似乎完美的解決了,但是不要忘記,伺服器需要把它的公鑰傳遞給瀏覽器,所以伺服器如何保證它能正確的傳遞公鑰呢(這問題像這樣推倒下去,就沒完沒了,變成雞和蛋的哲學問題了)?
好吧,我們來個終結者:ca證書.
ca證書是由權威機構頒發(意味著你可以信任他),證書的內容包含多種資訊,其中就包括伺服器的公鑰,還包括證書有效期等等。
通過它建立我們的信任基點,就可以保證伺服器公鑰被正確的傳遞給瀏覽器,然後瀏覽器可以使用它安全的把對稱加密的金鑰傳遞給伺服器,之後以此金鑰加密需要傳遞的資訊,保證了資料的安全性
可能到這裡,你會有疑問,為什麼我們不直接採用非對稱加密加密資料,而先是使用非對稱加密傳送對稱加密的金鑰,之後傳遞資料使用對稱加密?
這裡的原因很簡單,非對稱加密的計算效率遠遠不如對稱加密;
[b][color=red]整個https流程實際上是:[/color] 使用非對稱加密演算法保證對稱加密金鑰的安全傳遞,然後使用對稱加密來保證資料傳輸過程中的安全性[/b]
簡單易懂的HTTPS請求流程
1.客戶端傳送請求到達伺服器,伺服器收到後返回ca證書 證書裡包含公鑰 2.客戶端收到ca證書後,生成隨機金鑰,並利用公鑰進行加密處理後傳送給服務端 3.服務端收到客戶端傳過來的資料後,利用私鑰進行解密,獲取到隨機金鑰 4.服務端使用隨機金鑰加密資料,傳送給客戶端,客戶端收到後進行解密,獲取資料 5...
HTTPS加密流程
1 客戶端發起https請求首先向服務端傳送客戶端ssl tls協議版本號 支援的加密演算法種類 如 rsa加密演算法,des對稱加密演算法,sha1摘要演算法 產生隨機數等資訊 2 服務端向瀏覽器回傳 ssl tls 協議版本號 選擇一種客戶端瀏覽器支援的加密演算法和hash演算法 隨機數 服務端...
HTTPS 實現流程
https協議其實就是http over tsl,基礎的http通訊是明文的,有三大風險 資訊被竊聽,資訊被篡改,身份的冒充。tsl協議就是為防範這些風險存在的。tsl使用非對稱加密保護下的對稱加密在保證了通訊效率的同時防止竊聽,使用證書體系防止資訊篡改和身份冒認。注意 tsl協議握手階段的通訊是明...