HTTPS握手是怎样进行的?

4 min read

HTTPS的握手过程可以分为以下几个步骤:

  1. 客户端向服务器发送一个TLS/SSL版本的客户端Hello消息,其中包含客户端支持的协议版本、加密算法、压缩方法和随机数(Client Hello消息)。

  2. 服务器收到客户端Hello消息后,选择一种加密算法、压缩方法和会话ID,并发送一个用于协商密钥的服务器Hello消息。该消息也包含服务器支持的协议版本、加密算法和随机数(Server Hello消息)。

  3. 服务器将自己的数字证书发送给客户端,客户端验证证书是否有效,如果证书有效,则生成一组用于随后通信的随机数,即Pre-master Secret,然后使用服务器的公钥加密Pre-master Secret,并发送给服务器(Certificate Verify、Client Key Exchange消息)。

  4. 服务器解密Pre-master Secret,使用该随机数和双方约定的加密算法生成会话密钥,并发送一个加密完成消息(Server Finished消息)。

  5. 客户端也使用Pre-master Secret生成会话密钥,并发送一个加密完成消息(Client Finished消息)。

  6. 握手完成后,服务器和客户端将使用双方约定的加密算法互相加密和解密所传输的数据。

需要注意的是,HTTPS握手过程中的所有消息都是加密的,所以第三方无法窃听或修改握手消息。这样,双方可以建立一个安全的通信渠道。