本文简要介绍了SSL/TLS握手阶段的核心过程,省去了部分其它细节。HTTPS传输数据是通过密钥加密的,而密钥就是在握手阶段生成的,所以说握手的过程就是会话密钥(Session key)生成的过程。

握手的大致过程描述如下:

1、客户端发起请求(Client Hello)建立SSL链接,并向服务端发送第一个随机数(Client random)和客户端支持的加密方法,比如RSA公钥加密,此时是明文传输。
2、服务端回复请求(Server Hello),确定一种支持的加密方法,第二个随机数(Server random),授信的服务器证书,其中包含服务端公钥。
3、客户端收到服务端的回复,利用服务端的公钥对第三个随机数(Premaster secret)加密,发送给服务器。
4、服务端收到客户端的回复,利用服务端私钥进行解密得到第三个随机数,同时利用Client random、Server random和Premaster secret生成会话密钥(Session key)。

此后的HTTP链接数据即通过对称加密方式进行传输。