ECDHE 是什么
ECDHE 是「临时」版本的 ECDH:每次会话现场生成一对临时密钥,协商出会话密钥后立即销毁私钥。这样长期证书私钥即使将来泄漏,也无法解密此前记录的流量,即前向保密。TLS 1.3 的全部套件都基于 (EC)DHE,TLS 1.2 中则体现为套件名里的 ECDHE 前缀。
基本信息
| 全称 | Ephemeral Elliptic Curve Diffie-Hellman |
|---|---|
| 核心属性 | 前向保密(PFS) |
| TLS 1.2 标识 | 套件名含 ECDHE,如 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |
| TLS 1.3 | 全部套件基于 (EC)DHE 或 PSK |
| 曲线组 | 常用 X25519、P-256、P-384 |
| 相关配置 | TLS 1.2 的套件列表、TLS 1.3 的曲线组偏好 |
典型使用场景
- TLS 服务端配置:套件列表优先 ECDHE 组合
- 合规整改:安全基线普遍要求具备前向保密
- 长期留存流量的场景:取证或审计留存的流量不应被未来私钥破解
- 移动端与弱网:ECDHE 配合 X25519 开销低、握手快
- 多节点集群:配合会话票据密钥轮换策略一起规划
曲线配置与验证
曲线配置与验证
# 指定 ECDHE 曲线偏好(默认 auto 通常已可用)
ssl_ecdh_curve X25519:secp256r1:secp384r1;
# TLS 1.2 侧优先 ECDHE 套件并在末尾兜底也保持 AEAD
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
# 验证:套件名含 ECDHE 且出现 Server Temp Key 即说明使用了临时密钥
# openssl s_client -connect example.com:443 -tls1_2 </dev/null 2>&1 | grep -E 'Cipher|Server Temp Key'确认实际协商结果
确认实际协商结果
# TLS 1.2:查看套件与临时密钥类型
openssl s_client -connect example.com:443 -tls1_2 </dev/null 2>&1 | grep -E 'Cipher|Server Temp Key'
# TLS 1.3:全部套件具备前向保密,查看协议与套件即可
openssl s_client -connect example.com:443 -tls1_3 </dev/null 2>&1 | grep -E 'Protocol|Cipher'
# 指定曲线测试,确认服务端支持哪些组
openssl s_client -connect example.com:443 -groups X25519 -tls1_3 </dev/null 2>&1 | head -5与相邻概念对照
| 概念 | 是否提供前向保密 | 说明 |
|---|---|---|
| ECDHE | 有 | 每次会话新建临时密钥对 |
| 静态 ECDH | 无 | 密钥长期固定,泄漏影响历史会话 |
| RSA 密钥传输 | 无 | 会话密钥由客户端生成后用服务端公钥加密 |
| DHE | 有 | 非椭圆曲线版本,参数质量影响强度 |
| PSK / 会话票据 | 视票据密钥轮换情况 | 恢复会话时不再新建临时密钥 |
验证前向保密不能只看配置文本:TLS 1.2 下要确认实际协商到的套件含 ECDHE,并观察输出中是否出现临时密钥信息;TLS 1.3 下所有套件都基于 (EC)DHE,重点转为确认曲线组命中与票据策略。
只配置 ECDHE 套件未必足够:若服务端仍允许静态 RSA 或(当使用会话恢复时)长期不轮换的票据密钥,前向保密在部分路径上仍会失效。启用会话票据后应配置轮换策略,或直接关闭票据。