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

> EKU 即扩展密钥用途，是列出证书可用于哪些目的（如 serverAuth 服务器认证、clientAuth 客户端认证、代码签名）的 X.509 扩展。

Source: https://ssl.sh/zh/glossary/extended-key-usage/
Last updated: 2026-11-10

EKU 扩展里是一组对象标识符（OID），常见的有：serverAuth（1.3.6.1.5.5.7.3.1，TLS 服务器）、clientAuth（1.3.6.1.5.5.7.3.2，TLS 客户端）、codeSigning（1.3.6.1.5.5.7.3.3，代码签名）、emailProtection（1.3.6.1.5.5.7.3.4，S/MIME）和 timeStamping（1.3.6.1.5.5.7.3.8，时间戳）。[密钥用途](https://ssl.sh/zh/glossary/key-usage/) 限制的是密码学操作，EKU 限制的是应用目的，验证方会检查自己需要的用途是否在列表中。

## 为什么重要
EKU 已成为根证书计划按用途拆分 PKI 体系的主要手段。按 Chrome 根证书计划政策 v1.8，2026-06-15 起新披露的下级 CA 只能声明 serverAuth，2027-03-15 及之后签发的用户证书也只能包含 serverAuth。Let's Encrypt 的 classic 配置文件已于 2026-02-11 不再包含 clientAuth，tlsclient 配置文件于 2026-07-08 停用。凡是拿公网 TLS 证书充当 [mTLS](https://ssl.sh/zh/glossary/mtls/) [客户端证书](https://ssl.sh/zh/glossary/client-certificate/) 的系统，例如服务器之间的双向认证、对接第三方接口时出示的客户端证书，都需要改用私有 CA 或专门的客户端认证体系。

## 例子
```bash
openssl x509 -in cert.pem -noout -ext extendedKeyUsage
```

当前的公网服务器证书只会显示 `TLS Web Server Authentication`，较早签发的证书可能还带有 `TLS Web Client Authentication`。

## 常见误区
- **公网 TLS 证书会一直能用于客户端认证。** clientAuth 用途正在被移除，检查该用途的服务端会拒绝新签发的证书。
- **EKU 和 KU 是同一个东西。** 它们是两个独立的扩展，同时存在时证书必须两者都满足。

## 相关术语

- [密钥用途](https://ssl.sh/zh/glossary/key-usage/): 密钥用途是 X.509 证书扩展，限定证书公钥可执行的密码学操作，例如数字签名、密钥加密或签发证书。
- [客户端证书](https://ssl.sh/zh/glossary/client-certificate/): 客户端证书是 TLS 客户端在握手时出示、用来向服务器证明自身身份的 X.509 证书。
- [mTLS](https://ssl.sh/zh/glossary/mtls/): mTLS 是服务器和客户端在握手中都用 X.509 证书向对方证明身份的 TLS，也叫双向 TLS 认证。
- [代码签名证书](https://ssl.sh/zh/glossary/code-signing-certificate/): 代码签名证书是带有 codeSigning 扩展密钥用途、用来给软件做数字签名，让用户能核实发布者身份和文件完整性的 X.509 证书。
- [S/MIME](https://ssl.sh/zh/glossary/smime/): S/MIME 是一种使用 X.509 证书和 CMS 格式对电子邮件进行端到端签名和加密的标准。
- [下级 CA](https://ssl.sh/zh/glossary/subordinate-ca/): 下级 CA 是 CA 证书由另一个 CA（通常是根 CA）签发的证书颁发机构，一般负责实际签发终端证书。
- [根证书计划](https://ssl.sh/zh/glossary/root-program/): 根证书计划是浏览器或操作系统厂商用来决定其信任库收录、限制或移除哪些根 CA 的政策与流程。
