SSL是Web服务器和客户端之间进行加密通信时使用的安全协议,因为Web服务器和客户端之间的通信可能会被恶意攻击者截获,窃取机密信息,因此需要SSL协议来确保通信安全。SSL协议的核心是握手协议,握手协议由四个阶段组成,本文将从多个角度来分析SSL握手协议四个阶段。
第一阶段:客户端发送client_hello信息
在第一阶段中,客户端向Web服务器发送一个client_hello信息,这个信息包含客户端支持的SSL版本和加密方式等。客户端还会生成一个随机数,这个随机数将在后续的握手过程中使用。客户端发送client_hello信息后,Web服务器会给出一个server_hello信息,这个信息将包含服务器端支持的SSL版本和加密方式。
第二阶段:服务器发送证书和server_hello_done信息
在第二阶段中,Web服务器向客户端发送一个证书,这个证书将包含Web服务器的公钥。如果客户端的浏览器不信任这个证书,就会提示用户证书不可信。如果用户选择信任证书,浏览器就会用证书中的公钥来加密一个对称密钥,这个对称密钥将作为后续的加密密钥。
Web服务器还会发送一个server_hello_done信息,这个信息告诉客户端,Web服务器已经完成握手协议的第二阶段。客户端会验证证书,并且用证书中的公钥加密一个对称密钥,然后将加密后的对称密钥发送给Web服务器。
第三阶段:客户端发送client_key_exchange和change_cipher_spec信息
在第三阶段中,客户端向Web服务器发送一个client_key_exchange信息,这个信息包含客户端生成的预共享密钥,预共享密钥是由客户端生成的,用于加密和解密通信数据。客户端还会发送一个change_cipher_spec信息,这个信息告诉Web服务器,客户端即将使用加密后的密钥来加密通信数据。
Web服务器接收到客户端发送的client_key_exchange和change_cipher_spec信息后,会应答一个change_cipher_spec信息,这个信息告诉客户端,Web服务器已经准备好使用加密后的密钥来加密通信数据。
第四阶段:服务器和客户端发送finished信息
在第四阶段中,Web服务器和客户端会相互发送finished信息,这个信息包含了握手协议中用到的所有随机数和预共享密钥的哈希数值。如果Web服务器和客户端发送的finished信息相同,就可以证明握手协议已经成功完成。
扫码咨询 领取资料