TLS(传输层安全协议)握手过程是客户端(如浏览器)和服务器(如网站)之间建立安全连接的一系列步骤。以下是TLS握手的详细过程:
图片来自Vector
- 1. 客户端问候(Client Hello):
客户端向服务器发送“Client Hello”消息,包含支持的TLS版本、加密套件列表和一个随机数(Client Random)。
- 2.服务器问候(Server Hello):
服务器回复“Server Hello”消息,包含服务器选择的TLS版本、加密套件和另一个随机数(Server Random)。
服务器还会发送其SSL证书,用于身份验证。
- 3.服务器密钥交换和证书请求(Server Key Exchange and Certificate Request):
服务器发送密钥交换信息(如Diffie-Hellman参数)和可能的证书请求,以便客户端提供其证书进行双向认证。
- 4.客户端证书和密钥交换(Client Certificate and Key Exchange):
如果服务器请求了客户端证书,客户端会发送其证书。
客户端生成一个预主密钥(Premaster Secret),并使用服务器的公钥加密后发送给服务器。
- 5.生成会话密钥(Generate Session Keys):
客户端和服务器使用Client Random、Server Random和预主密钥生成会话密钥,用于后续的对称加密通信1。
- 6.完成握手(Finish Handshake):
客户端发送“Finished”消息,用会话密钥加密,表示握手过程结束。
服务器也发送“Finished”消息,用会话密钥加密,确认握手完成。
- 7. 安全通信(Secure Communication):
握手完成后,客户端和服务器使用生成的会话密钥进行加密通信。
TLS 1.3版本简化了握手过程,使其更快更安全。
TLS主要是对传输层数据进行加密,他有几个版本目前TLS1.2和TLS1.3版本(2015年发布)用的比较多。