首先放出经典的流程图:
TLS 握手共分四个阶段,为了便于理解,我用wireshark抓了包来分析每一个阶段:
Client Hello(第一次握手) :
客户端首先会发一个「Client Hello」消息,消息里面有客户端使用的 TLS 版本号、支持的密码套件列表,以及生成的随机数(Client Random)
Server Hello(第二次握手)
服务器收到client hello 之后,会回复要给server hello的消息,这个消息中会包含有服务端确认的 TLS 版本号,一个随机数(Server Random),以及从客户端的密码套件列表选择的一个合适的密码套件。(即流程中的2a)