https的通信步骤

https的通信步骤_第1张图片

步骤1:客户端通过发送client hello报文开始ssl通信。报文中包含客户端支持的ssl的指定版本,加密组件(cipher suite)列表(所使用的加密算法及秘钥长度等)。

步骤2:服务器可进行ssl通信时,会以server hello报文作为应答。和客户端一样,在报文中包含ssl版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。

步骤3:之后服务器发送certificate报文。报文中包含公开秘钥证书。

步骤4:最后服务器发送server hello done报文通知客户端,最初阶段的ssl握手协商部分结束。

步骤5:ssl第一次握手结束之后,客户端已client key exchange报文作为回应。报文中包含通信加密中使用的一种被称为pre-master secret的随机密码串。该报文已用步骤3中的公开秘钥进行加密。

步骤6:接着客户端继续发送change cipher spec报文。该报文会提示服务器,在此报文之后的通信会采用pre-master secret秘钥加密。

步骤7:客户端发送finished报文。该报文包含连接至今报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。

步骤8:服务器同样发送change cipher spec报文。

步骤9:服务器同样发送finished报文。

步骤10:服务器和客户端的finished报文交换完毕之后,ssl连接就算建立完成。当然,通信会受到ssl的保护。从此处开始进行应用层协议的通信,即发送http请求。

步骤11:应用层协议通信,即发送http响应。

步骤12:最后由客户端断开连接。断开连接,发送close_notify报文。上图做了一些省略,这步之后再发送tcp fin报文来关闭与tcp的通信。

以上流程中,应用层发送数据会附加一种叫做mac(message authentication code)的报文摘要。mac能够查知报文是否遭到篡改,从而保护报文的完整性。

你可能感兴趣的:(Web)