MST

星途 面试题库

面试题:网络编程之HTTPS协议基础原理

请详细阐述HTTPS协议建立连接的过程,包括客户端和服务器之间交互的消息及各自的作用。
28.5万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试
  1. 客户端发起请求
    • 客户端向服务器发送一个 ClientHello 消息。
    • 作用:这个消息包含客户端支持的SSL/TLS版本、加密套件列表(如加密算法、哈希算法等)、随机数(ClientRandom)等信息。服务器根据这些信息来选择合适的加密套件和版本进行后续通信,随机数用于后续生成主密钥等。
  2. 服务器响应
    • 服务器返回 ServerHello 消息。
    • 作用:其中包含服务器选择的SSL/TLS版本、加密套件、另一个随机数(ServerRandom)。这表明服务器对客户端请求的回应,确定了双方使用的加密版本和套件,第二个随机数也用于生成主密钥。
    • 接着服务器发送 Certificate 消息。
    • 作用:此消息包含服务器的数字证书,证书中有服务器的公钥等信息。客户端可以通过验证证书的合法性来确认服务器身份,确保证书是由受信任的证书颁发机构(CA)签发,且未被篡改。
    • 然后服务器发送 ServerHelloDone 消息。
    • 作用:表示服务器的Hello阶段结束,等待客户端进一步回应。
  3. 客户端验证与密钥交换
    • 客户端验证服务器证书的合法性。如果证书合法,客户端生成一个预主密钥(Pre - Master Secret),并用服务器证书中的公钥加密,通过 ClientKeyExchange 消息发送给服务器。
    • 作用:预主密钥是生成主密钥的重要材料,加密传输保证其安全性,只有服务器能用私钥解密获取。
    • 客户端使用之前的 ClientRandomServerRandomPre - Master Secret,通过一定算法计算出主密钥(Master Secret)。同时客户端发送 ChangeCipherSpec 消息。
    • 作用ChangeCipherSpec 通知服务器后续通信将使用协商好的加密套件和密钥进行加密。客户端还会发送一个 Finished 消息,这个消息是对之前所有握手消息的一个摘要,使用新的密钥和加密算法进行保护。
  4. 服务器响应与完成连接
    • 服务器用私钥解密 ClientKeyExchange 消息获取 Pre - Master Secret,同样使用 ClientRandomServerRandomPre - Master Secret 计算出主密钥。服务器发送 ChangeCipherSpec 消息。
    • 作用:通知客户端后续通信将使用新的加密套件和密钥。服务器也发送一个 Finished 消息,也是对之前所有握手消息的摘要,使用新密钥和加密算法保护。
    • 至此,客户端和服务器之间建立了安全的HTTPS连接,后续数据传输都将使用协商好的加密套件和密钥进行加密保护。