SSL证书(ssl.idcspy.net)是遵守SSL协议的,而SSL握手协议的过程很多人还不是很了解,本文主要来说说SSL握手协议的第一阶段的全部流程。
客户端首先发送Client hello消息到服务器端,服务器收到消息后回复一个Server hello消息给客户端。
建立起安全属性,客户端发送一个Client hello消息,包括如下参数:
版本:按优先级列出客户端支持的版本,首/选客户端支持的最新版本。
会话ID:会话ID标识一次会话,可以重复使用。
随机数:用于计算后面所有消息的摘要或者计算预主密钥。
密码算法列表:客户端会列出自己的密码套件,服务器会从中选出其中一套用来加密会话。
压缩方法:为了减少带宽占用,可以进行压缩。
收到客户端问候之后服务器必须发送服务器问候信息,服务器会检查指定诸如版本和算法的客户端问候的条件,如果服务器接受并支持所有条件,它将发送其证书以及其他详细信息,否则,服务器将发送握手失败消息,包括的参数如下:
版本:服务器拿出client hello消息中的版本号,再看看自己支持的版本列表,选择两者都支持的最高的版本号作为这次通信的版本号。
服务器产生的随机数:效果和客户端产生的随机数一致。(此时通信双方都分别拥有自己和对方的随机数)
会话ID:服务器检测传过来的session Id,如果检索为空,没有发现传过来的Session ID,服务端会新建一个。
服务器从客户端建议的密码套件中挑出一套密码算法。
服务器从客户端建议的压缩算法中挑出一套压缩算法。
在此阶段之后通信双方分别确定了:
SSL版本
密钥交换、信息验证和加密算法
压缩算法
通信双方的随机数(关于密钥的生成)