通讯抓包示意图:

2. 握手阶段详细过程

握手阶段涉及4次通信。

phpssltls协议彻底搞清HTTPS平安通信之SSL/TLS加密协定 CSS

4.1 客户端发出要求(Client Hello)

客户端数据紧张包含:

支持的协议版本,如TLS 1.2版一个客户端天生的随机数,稍后用于天生公钥支持的加密方法 ,如RSA支持的压缩方法。

客户端发送的信息中不包括做事器的域名。
2006年,TLS协议加入了一个Service Name Indication扩展,许可客户端向做事器供应它所要求的域名。

支持的加密算法示例:

4.2 做事器回应(Server Hello)

做事器收到客户端要求后,向客户端发出回应,包含:

确认利用的加密通信协议版本,比如TLS 1.2版本。
如果浏览器与做事器支持的版本不一致,做事器关闭加密通信。
一个做事器天生的随机数,稍后用于天生"对话密钥"。
确认利用的加密方法,比如RSA公钥加密。
做事器证书。

如果是双向认证,做事器须要确认客户真个身份,就会再包含一项要求,哀求客户端供应客户端证书。
即金融机构做事器端只许可认证客户连入自己的网络,会向正式客户供应USB密钥,里面就包含了一张客户端证书。
下面是单向认证抓包示意,Server Hello分成两个包发送。

4.3 客户端回应

客户端收到做事器回应往后,首先验证做事器证书。
如果有以下问题:

证书不是可信机构颁布或者证书中的域名与实际域名不一致或证书已经由期这时就会向访问者显示一个警告,由用户选择是否还要连续通信。

如果证书没有问题,客户端就会从证书中取出做事器的公钥,然后,向做事器发送以下信息:

一个随机数,用做事器公钥加密,称为pre-master key。
编码改变关照,表示随后的信息将用双方商定的加密方法 和密钥发送客户端握手结束关照,表示客户真个握手阶段已经结束。
这一项同时也是前面发送的所有内容的hash值,用来供做事器考验。

客户端与做事器同时有了三个随机数,接着双方就用事先商定的加密方法,各自天生本次会话所用的同一把”会话密钥“。

利用三次随机数,防止有的主机天生的只是伪随机数。

4.4 做事器回应

做事器收到客户真个第三个随机数pre-master key之后,打算天生本次会话所用的”会话密钥“,然后给客户端发送下面信息:

编码改变关照,表示随后的信息都将用双方商定的加密方法 和密钥发送。
做事器握手结束关照,表示做事器的握手阶段已经结束。
这一项同时也是前面发送的所有内容的hash值,用来供客户端考验。