TLS協議四次通信過程:
對於上圖可分為4步:
1.客戶端發出請求(ClientHello)
首先,客戶端先向服務器發出加密通信請求,在這一過程中 客戶端需要向服務器提供以下信息:
1)支持的協議版本 TLS 1.0 2.0
2)一個客戶端生成的隨機數,用於一會生成“對話密鑰”
3)支持的加密方法。例如:RSA公鑰加密
4)支持的壓縮方法
這里需要知道客戶端發送的信息中不包括服務器域名
2.服務器回應(ServerHello)
服務器收到客戶端請求后,向客戶端發出回應,服務器的回應內容如下
1)確定使用的加密通信協議版本 TLS1.0 如果與之前的版本不一致,服務器關閉加密通信
2)一個服務器生成的隨機數,用於一會的“對話密鑰”
3)確定使用的加密方法,例如:RSA公鑰加密
4)服務器證書
除此之外,服務器還會需要確定客戶端的身份,就會包含一份請求(要求客戶端提供客戶端證書)
3.客戶端回應
客戶端收到服務器的證書后,會先去檢測收到的服務器證書,是不是可信任的證書。如果證書過期,或者是不可信任的機構頒布,就會向訪問者顯示一個警告,告訴其是否需要繼續通信
如果證書沒有問題,客戶端就是從證書總提取服務器的公鑰,之后想服務器回應以下消息:
1)一個隨機數,該隨機數用於服務器公鑰加密
2)編碼改變通知
3)客戶端結束握手通知,並且會發送一個Hash值,用來驗證之前發送的信息正確性
至此,一共出現了三個隨機數:1-3步驟中都會生成隨機數(pre-master key),有個這三個隨機數后,客戶端和服務器都會同時有三個隨機數,接着雙方就用商定的加密方法,各自生成本次會話所用的同一把“會話密鑰”
4.服務器的回應
服務器收到客戶端的第三個隨機數后,計算出本次會話所用的會話密鑰。之后想客戶端發出以下信息:
1)編碼改變通知,表示雙方的信息都是用商定后的加密方法發送
2)服務器握手結束通知,表示服務器的握手截斷結束,同樣會發送一段HASH給客戶端用來校驗。
轉載至阮老師的帖子:
