60 秒回答模板

可以按建立连接的顺序回答:客户端先发起 TCP 连接,然后发送 ClientHello,带上支持的 TLS 版本、密码套件、随机数和扩展信息;服务端返回 ServerHello,选择协议版本和加密套件,并发送证书链和密钥交换相关参数;客户端验证证书是否可信、域名是否匹配、证书是否过期或被吊销;双方通过 ECDHE 等密钥交换算法计算共享秘密,再结合客户端随机数和服务端随机数派生出对称会话密钥;最后双方发送 Finished 消息确认握手未被篡改。后续 HTTP 报文使用会话密钥加密传输,既保证机密性,也保证完整性和身份认证。

考点 身份认证
难度 真实面经高频题
回答目标 讲清机制、边界和追问

深入解析

01

HTTPS 的分层

HTTPS 不是新的应用层协议,而是在 HTTP 和 TCP 之间加入 TLS。HTTP 仍然负责请求方法、路径、头部和响应体,TLS 负责身份认证、密钥协商、加密传输和完整性保护。面试回答要把网络层次说清楚,否则容易把证书、非对称加密和 HTTP 报文混在一起。

02

握手的目标

TLS 握手要解决三个问题:客户端如何确认服务端确实是目标站点,双方如何在不泄露密钥的情况下协商出会话密钥,握手过程如何防止中间人篡改。证书解决身份问题,密钥交换解决共享秘密问题,Finished 校验解决握手完整性问题。

03

证书验证

服务端会发送证书链,客户端根据本地信任根证书逐级验证签名,同时检查证书有效期、域名匹配、用途限制和吊销状态。证书本身通常不是用来加密所有业务数据,而是用来证明公钥属于该服务端。若证书不可信,中间人就可能伪造站点,因此浏览器会阻断或强提示。

04

密钥协商

现代 TLS 常用临时椭圆曲线 Diffie-Hellman 完成密钥交换。客户端和服务端各自生成临时私钥和公开参数,双方通过数学计算得到相同共享秘密,但旁路监听者无法直接算出。随后双方把共享秘密和握手随机数输入密钥派生函数,生成用于加密、认证和记录保护的会话密钥。

05

数据传输加密

握手完成后,HTTP 数据主要使用对称加密算法传输,因为对称加密速度快,适合大量数据。TLS 记录层会把数据分片、加密并附带认证信息,接收方可以验证数据是否被篡改。TLS 还支持会话恢复,减少重复握手开销,但恢复机制仍要保证密钥隔离和安全属性。

易错点

  • 认为 HTTPS 就是用服务端公钥直接加密所有 HTTP 数据,忽略对称会话密钥的作用。
  • 只说加密,不提证书验证和身份认证,无法解释中间人攻击为什么会被阻断。
  • 把证书理解成保存服务端私钥的文件,实际证书公开的是身份信息和公钥。
  • 忽略完整性校验,只把 HTTPS 当作防窃听机制,没有覆盖防篡改和防伪造。

面试官追问

HTTPS 为什么不全程使用非对称加密?

非对称加密计算成本高,不适合大量业务数据。TLS 用非对称机制解决身份认证和密钥协商,之后用高效的对称加密传输 HTTP 内容。

证书被信任意味着什么?

意味着客户端能通过信任链验证该证书由可信机构签发,并且证书绑定的域名、有效期和用途满足当前连接要求。它证明公钥属于目标站点,而不是证明业务内容一定可信。

中间人攻击会发生在哪里?

攻击者可能拦截连接并试图替换证书或篡改密钥交换参数。如果客户端正确验证证书链和握手完整性,攻击者无法伪装成服务端并建立被信任的安全通道。

TLS 握手为什么需要随机数?

客户端随机数和服务端随机数参与密钥派生,保证不同连接生成不同会话密钥,也防止重放旧握手材料得到相同密钥。