# ECDHE是什么？定义、例子与常见误区

> ECDHE 是椭圆曲线上的临时 Diffie-Hellman 密钥交换，TLS 双方每次握手都生成新的椭圆曲线密钥对，并据此协商出共享密钥。

Source: https://ssl.sh/zh/glossary/ecdhe/
Last updated: 2026-11-10

ECDHE 就是在椭圆曲线群上进行的 [Diffie-Hellman](https://ssl.sh/zh/glossary/diffie-hellman/) 密钥协商，"临时"（Ephemeral）指双方每次握手都生成新的私钥、用完即丢。双方各自发送公钥点，再用对方的点和自己的私钥计算，得到相同的共享秘密。TLS 1.2 中它出现在 ECDHE-RSA-AES128-GCM-SHA256 这类套件名里；TLS 1.3 中客户端为 x25519 或 secp256r1（即 [P-256](https://ssl.sh/zh/glossary/p-256/)）等曲线发送 key_share，服务器回应自己的那一份。

## 为什么重要
私钥只存在于一次握手中，所以 ECDHE 提供[前向保密](https://ssl.sh/zh/glossary/forward-secrecy/)：即使证书私钥日后泄露，之前录下的会话也无法解密。与同等强度的有限域 DHE 相比，它的计算和传输开销小得多，256 位曲线就相当于 3072 位 DH 群的强度。今天几乎所有 HTTPS 连接都使用 ECDHE，后量子混合方案 X25519MLKEM768 中的经典部分也正是 X25519。

## 例子
在 Nginx 中设置曲线优先级，并检查服务器实际选用哪条曲线：

```nginx
ssl_ecdh_curve X25519:prime256v1:secp384r1;
```

```bash
openssl s_client -connect example.com:443 -groups X25519
```

加了 `-groups` 后，只有服务器支持该曲线时握手才会成功，连接摘要里也会显示实际协商出的群。注意 OpenSSL 把 P-256 叫作 prime256v1。

## 常见误区
- **用 ECDHE 必须配 ECDSA 证书。** ECDHE 只负责密钥交换，身份认证仍可使用 RSA，ECDHE-RSA 系列套件就是这样。
- **"临时"指服务器证书的密钥是临时的。** 临时的只有密钥交换用的那对密钥，证书密钥是长期的。
- **ECDH 和 ECDHE 是一回事。** 静态 ECDH 套件复用证书里的固定密钥，没有前向保密，TLS 1.3 已将其删除。

## 相关术语

- [Diffie-Hellman](https://ssl.sh/zh/glossary/diffie-hellman/): Diffie-Hellman 是 1976 年提出的密钥协商方法，让通信双方在公开信道上各自算出相同的共享秘密，而无需传输这个秘密本身。
- [密钥交换](https://ssl.sh/zh/glossary/key-exchange/): 密钥交换是 TLS 握手中客户端与服务器建立共享秘密的步骤，保护连接的对称密钥都由这个共享秘密派生而来。
- [前向保密](https://ssl.sh/zh/glossary/forward-secrecy/): 前向保密是密钥交换的一种安全属性：即使服务器的长期私钥日后泄露，过去连接的会话密钥也不会因此暴露。
- [ECC](https://ssl.sh/zh/glossary/ecc/): ECC 即椭圆曲线密码学，是基于有限域上椭圆曲线代数结构的公钥密码技术，能用较短的密钥提供很高的安全强度。
- [P-256](https://ssl.sh/zh/glossary/p-256/): P-256 是 NIST 标准化的 256 位素数域椭圆曲线，也叫 secp256r1 或 prime256v1，广泛用于 ECDSA 证书和 ECDHE 密钥交换。
- [X25519MLKEM768](https://ssl.sh/zh/glossary/x25519mlkem768/): X25519MLKEM768 是把经典的 X25519 与后量子算法 ML-KEM-768 组合起来的 TLS 1.3 混合密钥交换群，Chrome 从 131 版起使用。
- [密码套件](https://ssl.sh/zh/glossary/cipher-suite/): 密码套件是 TLS 客户端和服务器协商使用的一组命名的加密算法组合，例如 TLS_AES_128_GCM_SHA256，决定连接用什么算法保护数据。
