Https的全稱是Http over SSL肘迎,而SSL是在TCP協(xié)議之上的保密層,但是它也是屬于傳輸層的锻煌,如果直接傳輸Http妓布,報文的信息安全是無法被保障的,因為它在應(yīng)用層的信息傳輸是明文傳輸?shù)摹?/p>
Https傳輸建立的過程可以分為兩個過程宋梧,信任建立的過程和連接建立的過程匣沼,如果再細(xì)分可以分為九個步驟,分別是:
客戶端首先會給服務(wù)器發(fā)送Client Hello捂龄, Client Hello中主要包含了以下這幾個消息:
其中Ciper Suites其實就是Ciper Suite的集合释涛,也就是說Ciper Suites包含了一個或多個Ciper Suite加叁,那么Ciper Suite到底是什么呢?其實就是對稱加密算法枢贿,非對稱加密算法和Hash算法的一個組合殉农,下面就是一個例子
Ciper Suite:AES_RSA_SHA1
Ciper Suites就是幾個Ciper Suite的集合,像這樣:
AES_RSA_SHA1局荚、DES_DSA_MD5、AES_RSA_MD5
客戶端收到服務(wù)器收到的這一系列消息之后愈污,它會從客戶端發(fā)送的Ciper Suites中挑選出一個Ciper Suite和SSL/TLS版本耀态,然后和自己生成的客戶端隨機(jī)數(shù)一起發(fā)送給客戶端,就是這幾個部分:
服務(wù)端得向客戶端證明自己就是剛剛客戶端發(fā)送消息的那個服務(wù)器暂雹,而CA證書里面就包含了這樣的信息首装,需要注意的是,服務(wù)端發(fā)送給客戶端的證書包含的信息并不只是證書本身杭跪,也包含了給它發(fā)證的簽發(fā)機(jī)構(gòu)的信息仙逻。證書包含的信息大概如下:
驗證證書的過程是這樣的:
有些機(jī)構(gòu),如銀行等涧尿,可能會對客戶端也做一次驗證系奉,大致過程和服務(wù)端驗證相似
Pre-master Secret是由客戶端通過自身信息算出來的,客戶端將會把Pre-master Secret使用剛剛在證書中獲得的證書公鑰加密后發(fā)送給服務(wù)器姑廉,服務(wù)器收到Pre-master后缺亮,客戶端和服務(wù)器都將協(xié)商出一個Master Secret, 因為客戶端和服務(wù)器都擁有 客戶端隨機(jī)數(shù)、服務(wù)器隨機(jī)數(shù)桥言、Pre-Master Secret,如圖所示
得到Master Secret之后客戶端和服務(wù)器將使用 Ciper Suite和Master Secret一起計算出客戶端密鑰和服務(wù)端密鑰以及客戶端MAC Secret和服務(wù)器MAC Secret萌踱,如圖:
做完這步之后客戶端和服務(wù)器會繼續(xù)建立通信
這里其實僅僅只是發(fā)送了一個幾字節(jié)的通知而已,客戶端告訴服務(wù)器將使用加密通信
在這里客戶端將發(fā)送一個Finished消息号阿,這個Finished消息實際上是對上述客戶端與服務(wù)端發(fā)送的消息的一個匯總并鸵,用來使服務(wù)器來驗證客戶端是不是剛剛建立信任的客戶端,F(xiàn)inished消息結(jié)果了兩步加工:
HMAC是在獲得了客戶端MAC Secret和服務(wù)端MAC Secret后服務(wù)器和客戶端都得到的HASH算法
服務(wù)端在收到客戶端發(fā)送的Finished消息后將對消息進(jìn)行驗證扔涧,步驟如下: 1. 服務(wù)端對之前所有的消息也做一個HMAC 2. 服務(wù)端對客戶端發(fā)送過來的Finished消息進(jìn)行解密(因為服務(wù)端也有客戶端密鑰) 3. 服務(wù)端對1和2得到的消息進(jìn)行比對园担,如果一樣則說明發(fā)送消息的客戶端是之前建立起信任的客戶端,將進(jìn)行之后步驟
這兩個步驟其實跟前面客戶端發(fā)送加密通信和Finished消息是一樣的扰柠,所有這里就略過了
從這個步驟開始客戶端和服務(wù)器就開始正式的通信了粉铐,從應(yīng)用層看發(fā)送的報文的話只會得到這是一個應(yīng)用層的消息,具體的消息只能看到類似與亂碼卤档,與Http明文通信對比十分鮮明蝙泼。