SSL握手协议 一个SSL会话工作在不同的状态,即会话状态和连接状态。
·会话状态: ①会话标识符
②对方的证书
③压缩方法
④密文规约
⑤主密钥
⑥可重新开始标志
·连接状态: ①服务器和客户随机数
②服务器写MAC密钥
③客户写MAC密钥
④服务器写密钥
⑤客户写密钥
⑥初始化向量
⑦序号
SSL握手协议用于鉴别初始化和传输密钥,它使得服务器和客户能相互鉴别对方的身份,并保护在SSL记录中发送的数据。因此在传输任何应用数据前,都必须使用握手协议。

图 SSL握手过程
SSL握手的详细过程 ·第一步:客户发出一个带有客户HELLO信息的连接请求。这信息包括:
①想要使用的SSL版本号。
②时间信息,以标准的UNIX32位格式标识的现时和日期。
③会话标识(可选),如果没有指定的话,则服务器便重用上一次的会话标识或返回一个错误信息
④密文组(客户方所支持的各种加密算法选项清单。包括认证码、密钥交换方法、加密和MAC算法)。
⑤客户方所支持的压缩算法。
⑥随机数。
·第二步:服务器评估客户方发来的HELLO信息中的各项参数,并且返回一个服务器方的HELLO信息,其中含有服务器选来用于SSL会话的各项参数(版本号、时间信息、以标准的UNIX32位格式标识的现时和日期、会话标识、密文组、压缩方法、随机数)。
在服务器HELLO信息之后,服务器发出如下信息:①服务器证书,如果服务器需要被鉴别的话。②服务器密钥交换信息,如果得不到证书或证书仅仅用作签名的话。③证书请求,如果客户要求被鉴别的话。
最后,服务器发出一个服务器HELLO DONE信息,开始等待客户的回音。
·第三步:客户发送下列信息:
①如果服务器发出了一个证书请求,那么客户方必须发送一个证书或非证书信息。
②如果服务器发送了一个服务器密钥交换信息,那么客户方就发送一个基于公钥算法的由HELLO信息决定的密钥交换信息。
③如果客户方已经发送了一个证书,那么客户方就需验证服务器方的证书并且发出一个证书验证信息指明结果。
然后,客户方发出一个结束信息,指出协商过程已经完成。客户方还发送一个修改密文规约信息来产生共享的常规密钥。应该注意这部分工作不是由握手协议控制,是由修改密文规约协议管理的。
·第四步:服务器发出一个结束信息指出协商协商阶段完成。然后服务器发出一个密文修改规约信息。
·第五步:会话双方分别产生一个加密密钥,然后他们再根据这些密钥导出会话主密钥。握手协议改变状态至连接状态。所有从应用层的来的数据传输作为特定信息传输给对方。