TLS协议学习第二篇,内容来自:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc785811(v=ws.10)
握手协议是协商数据传输会话的安全参数的一系列序列消息。下图说明了握手协议中的消息序列。
一、初始的客户端消息
Client Hello:
客户端通过向服务器发送Client Hello消息来启动会话。Client Hello消息包含:
版本号。客户端发送与其支持的最高版本对应的版本号。版本2用于SSL 2.0,版本3用于SSL 3.0,版本3.1用于TLS。尽管用于TLS的IETF RFC是TLS版本1.0,但该协议在版本字段中使用3.1来表示它是比SSL 3.0更高的级别。
随机生成的数据。ClientRandom[32],随机值,是一个4字节的数字,由客户端的日期和时间加上一个28字节随机生成的数字组成,最终将与服务器随机值一起使用,以生成一个主密钥,从中导出加密密钥。
会话标识(如果有)。包含sessionID是为了使客户端能够恢复上一个会话。恢复上一个会话可能很有用,因为创建新会话需要处理器密集型公钥操作,可以通过使用已建立的会话密钥恢复现有会话来避免这些操作。由sessionID标识的先前会话信息存储在相应的客户端和服务器会话缓存中。
密码套件。客户端上可用的密码套件列表。密码套件的一个示例是TLS_RSA_WIT