HTTPS握手過程
- 瀏覽器將自己支持的一套加密規(guī)則發(fā)送給網(wǎng)站猬膨。
- 網(wǎng)站從中選出一組加密算法與HASH算法,并將自己的身份信息以證書的形式發(fā)回給瀏覽器呛伴。證書里面包含了網(wǎng)站地址勃痴,加密公鑰,以及證書的頒發(fā)機(jī)構(gòu)等信息热康。
- 獲得網(wǎng)站證書之后瀏覽器要做以下工作:
- 驗證證書的合法性(頒發(fā)證書的機(jī)構(gòu)是否合法沛申,證書中包含的網(wǎng)站地址是否與正在訪問的地址一致等),如果證書受信任褐隆,則瀏覽器欄里面會顯示一個小鎖頭污它,否則會給出證書不受信的提示。
- 如果證書受信任庶弃,或者是用戶接受了不受信的證書衫贬,瀏覽器會生成一串隨機(jī)數(shù)的密碼,并用證書中提供的公鑰加密歇攻。
- 使用約定好的HASH計算握手消息固惯,并使用生成的隨機(jī)數(shù)對消息進(jìn)行加密,最后將之前生成的所有信息發(fā)送給網(wǎng)站缴守。
- 網(wǎng)站接收瀏覽器發(fā)來的數(shù)據(jù)之后要做以下的操作:
- 使用自己的私鑰將信息解密取出密碼葬毫,使用密碼解密瀏覽器發(fā)來的握手消息,并驗證HASH是否與瀏覽器發(fā)來的一致屡穗。
- 使用密碼加密一段握手消息贴捡,發(fā)送給瀏覽器。
- 瀏覽器解密并計算握手消息的HASH村砂,如果與服務(wù)端發(fā)來的HASH一致烂斋,此時握手過程結(jié)束,之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機(jī)密碼并利用對稱加密算法進(jìn)行加密础废。
這里瀏覽器與網(wǎng)站互相發(fā)送加密的握手消息并驗證汛骂,目的是為了保證雙方都獲得了一致的密碼,并且可以正常的加密解密數(shù)據(jù)评腺,為后續(xù)真正數(shù)據(jù)的傳輸做一次測試帘瞭。
HTTPS一般使用的加密與HASH算法如下:
非對稱加密算法:RSA,DSA/DSS (公鑰加密蒿讥,私鑰解密)
對稱加密算法:AES蝶念,RC4,3DES
HASH算法:MD5芋绸,SHA1媒殉,SHA256
其中非對稱加密算法用于在握手過程中加密生成的密碼,對稱加密算法用于對真正傳輸?shù)臄?shù)據(jù)進(jìn)行加密侥钳,而HASH算法用于驗證數(shù)據(jù)的完整性适袜。