MST
星途 面试题库

面试题:网络编程中HTTPS在在线支付安全验证流程里,TLS握手阶段客户端和服务器分别做了什么

请详细描述在HTTPS用于在线支付的安全验证流程中,TLS握手阶段客户端与服务器交互的主要步骤及各自所执行的操作。
15.8万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试
  1. 客户端发起握手
    • 操作:客户端向服务器发送ClientHello消息,该消息包含客户端支持的TLS版本、加密套件列表(如AES - GCM - SHA256等)、随机数(Client Random)、压缩方法等信息。此步骤是握手的起始,客户端告知服务器自己的能力和初始随机值。
  2. 服务器回应
    • 操作:服务器收到ClientHello后,回复ServerHello消息。消息中包含服务器选择的TLS版本、选定的加密套件、服务器产生的随机数(Server Random)。接着服务器发送Certificate消息,将自己的数字证书(包含公钥等信息)发送给客户端,用于身份验证。如果服务器需要客户端进行身份验证,还会发送CertificateRequest消息。最后发送ServerHelloDone消息,表明服务器的Hello阶段结束。
  3. 客户端验证与密钥交换
    • 操作:客户端验证服务器的数字证书,检查证书的有效性(如是否过期、证书链是否完整等)。验证通过后,客户端生成一个预主密钥(Pre - Master Secret),用服务器证书中的公钥加密,通过ClientKeyExchange消息发送给服务器。同时客户端根据Client Random、Server Random和Pre - Master Secret计算出会话密钥(Master Secret),再通过此Master Secret生成用于后续通信的对称加密密钥(如用于加密数据的会话密钥、用于消息认证的MAC密钥等)。然后客户端发送ChangeCipherSpec消息,通知服务器后续通信将使用协商好的加密套件和密钥进行加密。最后发送Finished消息,该消息是对之前所有握手消息的摘要,使用新生成的密钥加密,用于让服务器验证客户端计算的密钥是否正确。
  4. 服务器完成握手
    • 操作:服务器使用自己的私钥解密ClientKeyExchange消息,获取Pre - Master Secret,同样根据Client Random、Server Random和Pre - Master Secret计算出会话密钥(Master Secret),进而生成对称加密密钥。服务器发送ChangeCipherSpec消息,表明后续将使用新的加密套件和密钥。最后发送Finished消息,也是对之前所有握手消息的摘要,用新密钥加密,让客户端验证服务器计算的密钥是否正确。至此,TLS握手完成,双方可以使用协商好的密钥进行安全的在线支付通信。