https
全稱hyper text transfer protocol over securesocket layer
,是以安全為目標的http
通道,在http
的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性。https
在http
的基礎下加入ssl
層,https
的安全基礎是ssl
,因此加密的詳細內容就需要ssl
。
http
是應用層協議,預設執行在80
埠,是一種不安全的傳輸協議,經其傳輸的資料都是未加密的明文資料,可以被中間人攻擊,獲取到你的網路傳輸資料,這也就是盡量不要使用公共場所wifi
的原因。
https
是應用層協議,預設執行在443
埠,是一種安全的傳輸協議,通過在http
層與運輸層的tcp
直接加入乙個加密/身份驗證層來保證安全傳輸。
ssl
安全套接層secure sockets layer
,位於tcp/ip
協議與各種應用層協議之間,為資料通訊提供安全支援。ssl
協議可分為兩層:
ssl
記錄協議ssl record protocol
:它建立在可靠的傳輸協議如tcp
之上,為高層協議提供資料封裝、壓縮、加密等基本功能的支援。
ssl
握手協議ssl handshake protocol
:它建立在ssl
記錄協議之上,用於在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等。
tls
傳輸層安全性協議transport layer security
用於在兩個通訊應用程式之間提供保密性和資料完整性,其由tls
記錄協議和tls
握手協議組成。tls1.0
即為ssl3.0
的標準化版本,ssl
最初由網景netscape
提出研發,在ssl3.0
時由國際網際網路工程任務組ietf
進行了標準化並新增了少量機制,並更名為tls1.0
。
簡單來說對稱加密的加密金鑰和解密金鑰是相同的,對稱加密的效率要比非對稱加密高。
簡單來說非對稱加密的加密金鑰與解密金鑰是不同的,需要一把公鑰與一把私鑰,私鑰不能被其他任何人知道,公鑰則可以隨意公開。公鑰加密,私鑰解密;私鑰數字簽名,公鑰驗證。
由於公鑰是放在伺服器的,在建立連線的過程中將公鑰傳輸到使用者,但是如何避免中間人攻擊,即在傳輸公鑰的過程中避免劫持,於是引入第三方認證權威機構ca
,大多數作業系統的ca
證書是預設安裝的,ca
也擁有乙個公鑰和私鑰。任何人都可以得到ca
的證書,其包含公鑰,用以驗證它所簽發的證書。ca
為服務申請者頒發證書,在ca
判明申請者的身份後,便為他分配乙個公鑰,並且ca
將該公鑰與申請者的身份資訊綁在一起,並為之簽字後,便形成證書發給申請者。如果乙個使用者想鑑別乙個證書的真偽,他就用ca
的公鑰對那個證書上的簽字進行驗證,一旦驗證通過,該證書就被認為是有效的。證書實際是由證書簽證機關ca
簽發的對使用者的公鑰的認證。
首先tcp
三次握手建立鏈結,這是資料傳輸基礎,在此之上開始ssl
客戶端首先傳送client hello
開始ssl
通訊,報文中包含客戶端支援的ssl
版本、隨機值random1
、加密演算法以及金鑰長度等。
伺服器傳送server hello
,和客戶端一樣,在報文中包含ssl
版本、隨機值random2
以及加密元件,此後服務端將證書也傳送到客戶端。
此時客戶端需要對服務端傳送的證書進行驗證,通過作業系統內建的ca
證書,將伺服器傳送的證書的數字簽名進行解密,並將證書的公鑰進行相同演算法的hash
與解密的數字簽名解密的內容進行對比,驗證證書是否合法有效,是否被劫持更換。
客戶端驗證證書合法,然後生成乙個隨機值random3
,用公鑰對random3
進行加密,生成pre-master key
,客戶端以client key exchange
報文將pre-master key
傳送到服務端,此後傳送change cipher spec
報文表示此後資料傳輸進行加密傳輸。
服務端將pre-master key
用自己的私鑰解密為random3
,服務端傳送change cipher spec
報文表示此後資料傳輸進行加密傳輸。
此時客戶端與服務端都擁有三個隨機字串,且random3
是密文傳輸的,是安全狀態的,此時則可以使用這三個字串進行對稱加密傳輸。由於非對稱加密慢,不能每次傳輸資料都進行非對稱加密,所以使用非對稱加密將金鑰協商好然後使用對稱加密進行資料傳輸。
此時便正常進行http
資料傳輸,但是由於ssl
加密的作用,此時的http
傳輸便是安全的,此為https
的傳輸過程,其中2
、3
、5
、6
也被稱為ssl
四次握手。
https加密傳輸詳解
https採用對稱加密與非對稱加密的混合加密方式 混合加密方式原理 1.服務端將非對稱加密的公鑰傳送給客戶端 2.客戶端拿著服務端發來的公鑰,對對稱加密的key做加密並發給服務端 3.服務端拿著自己的私鑰對發來的密文解密,從來獲取到對稱加密的key 4.二者利用對稱加密的key對需要傳輸的訊息做加解...
https進行加密傳輸
ssl握手協議的過程 握手階段分成以下五步 第一步,客戶端給出協議版本號 乙個客戶端生成的隨機數 client random 以及客戶端支援的加密方法。第二步,伺服器確認雙方使用的加密方法,並給出數字證書 以及乙個伺服器生成的隨機數 server random 第三步,客戶端確認數字證書有效,然後生...
https 協議傳輸過程學習
服務端儲存一對公鑰與私鑰。是用來進行非對稱加密使用的。私鑰不能將其洩漏,公鑰可以傳輸給任何人。瀏覽器向伺服器發起https請求,向伺服器的443埠鏈結。伺服器將公鑰傳送給瀏覽器!瀏覽器收到公鑰後,將驗證公鑰合法性。如果公鑰不合法,將無法發起https傳輸。換言之,驗證https數字證書。證書合法,瀏...