1.客戶端發(fā)起https請求
2.服務(wù)端響應(yīng)一個證書(包含服務(wù)器信息,公鑰颅崩,數(shù)字簽名---證書頒發(fā)機構(gòu),證書的指紋(證書頒發(fā)機構(gòu)自己用私鑰加密的)和指紋算法等)
3.客戶端驗證證書是否安全.判斷內(nèi)容
(1)判斷頒發(fā)機構(gòu)是否為操作系統(tǒng)所信任的(一般在本地) --------操作系統(tǒng)會默認一些頒發(fā)機構(gòu)是安全的
(2)利用操作系統(tǒng)所信任的頒發(fā)機構(gòu)的證書 (這里的證書是頒發(fā)機構(gòu)自己用的) 中的公鑰菲宴,去解密上述證書的加密的指紋得到指紋hash摘要
(3)利用上述指紋算法算出指紋hash摘要艰管,從而對比兩個hash摘要是否相同,從而保證證書數(shù)據(jù)沒有被篡改過
4.如果第3步都驗證通過說明該證書是可信的
5.檢驗服務(wù)器響應(yīng)證書的公鑰狈醉,是否為服務(wù)器所發(fā)
6.給服務(wù)器發(fā)送隨機字符串廉油,服務(wù)器用私鑰加密隨機字符串并做hash摘要響應(yīng)給客戶端,客戶端用公鑰解密得到hash摘要并和自己生成的hash值對比是否一致苗傅,從而判斷對方是否為服務(wù)器
7.如果第6步通過抒线,說明服務(wù)端確實擁有正確的私鑰,客戶端就可以用這個公鑰加密一個對稱加密的密鑰(簡稱對稱密鑰)然后發(fā)送給服務(wù)端
8.服務(wù)端用私鑰解密這個加密的對稱密鑰渣慕,以后雙方便用這個對稱密鑰加密進行通信嘶炭。
上述存在的疑問的個人見解
(2)利用操作系統(tǒng)所信任的頒發(fā)機構(gòu)的證書 (這里的證書是頒發(fā)機構(gòu)自己用的) 中的公鑰,去解密上述證書的加密的指紋得到指紋hash摘要
這一步的指紋hash摘要的意義是什么逊桦?不做hash摘要會不會有影響眨猎?
答:因為證書中的(公鑰)對應(yīng)了一個私鑰,而這個私鑰只有證書機構(gòu)才擁有卫袒。
不做hash的情況宵呛,黑客只要篡改證書信息,很難模擬對應(yīng)的私鑰加密生成的指紋夕凝,而該指紋如果不做hash摘要宝穗,那么我們驗證也不做hash摘要保持一致就可以了。所以可以不是必須的码秉。
這里做hash的意義逮矛,可以減小數(shù)據(jù)長度,加快到時對方用公鑰解密速度转砖,優(yōu)化性能须鼎。
第6步同理,hash可以優(yōu)化性能府蔗,且此處這樣使用可以讓黑客更難找出加密規(guī)律(因為是主動探查服務(wù)端有沒有私鑰)晋控。