# 密钥用途（Key Usage，KU）是什么？定义、例子与常见误区

> 密钥用途是 X.509 证书扩展，限定证书公钥可执行的密码学操作，例如数字签名、密钥加密或签发证书。

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

密钥用途（Key Usage）是 RFC 5280 定义的位串，共九个标志：digitalSignature、nonRepudiation（又称 contentCommitment）、keyEncipherment、dataEncipherment、keyAgreement、keyCertSign、cRLSign、encipherOnly 和 decipherOnly。它描述底层的密码学操作，而 [扩展密钥用途](https://ssl.sh/zh/glossary/extended-key-usage/) 描述“用于 TLS 服务器认证”这类应用层目的。CA 证书使用 keyCertSign 和 cRLSign；TLS 服务器证书使用 digitalSignature，RSA 密钥还常带 keyEncipherment。

## 为什么重要
扩展存在时客户端就会强制检查，而且它通常被标记为关键，所以标志写错，证书其他方面再正确也会验证失败。标志应与密钥类型和协议对应：[ECDSA](https://ssl.sh/zh/glossary/ecdsa/) 密钥用于签名握手数据，需要 digitalSignature；keyEncipherment 是为老式 [RSA](https://ssl.sh/zh/glossary/rsa/) 密钥交换准备的，即客户端用服务器的 RSA 公钥加密预主密钥。TLS 1.3 已删除这种密钥交换，因此在 TLS 1.3 中 RSA 证书也只用于签名。自己用 OpenSSL 签发内网证书时，漏写或乱写这一扩展是很常见的错误。

## 例子
```text
X509v3 Key Usage: critical
    Digital Signature, Key Encipherment
```

这是 RSA 服务器证书的典型写法；ECDSA 服务器证书通常只显示 `Digital Signature`。

## 常见误区
- **KU 和 EKU 是一回事。** KU 限制密码学操作，EKU 限制应用用途，两者同时存在时都必须允许该用法。
- **TLS 1.3 需要 keyEncipherment。** TLS 1.3 从不用证书密钥做加密，关键的是 digitalSignature。

## 相关术语

- [EKU](https://ssl.sh/zh/glossary/extended-key-usage/): EKU 即扩展密钥用途，是列出证书可用于哪些目的（如 serverAuth 服务器认证、clientAuth 客户端认证、代码签名）的 X.509 扩展。
- [基本约束](https://ssl.sh/zh/glossary/basic-constraints/): 基本约束是 X.509 证书扩展，用来声明该证书是否属于 CA，以及其下方还允许出现多少层 CA。
- [X.509](https://ssl.sh/zh/glossary/x509/): X.509 是 ITU-T 制定的公钥证书标准格式，其互联网配置规范 RFC 5280 规定了 TLS 所用证书的结构和验证方法。
- [数字签名](https://ssl.sh/zh/glossary/digital-signature/): 数字签名是用私钥对消息计算出的一个值，任何持有对应公钥的人都能验证它，从而确认消息来源和内容未被篡改。
- [RSA](https://ssl.sh/zh/glossary/rsa/): RSA 是 1977 年提出的公钥算法，TLS 用它对证书和握手进行签名，在 TLS 1.3 之前还用它传输会话密钥。
- [ECDSA](https://ssl.sh/zh/glossary/ecdsa/): ECDSA 是基于椭圆曲线的数字签名算法，在 TLS 证书中作为 RSA 的替代方案，密钥和签名更小、签名运算更快。
- [TLS 1.3](https://ssl.sh/zh/glossary/tls-1-3/): TLS 1.3 是当前最新的传输层安全协议版本（2018 年的 RFC 8446，现行规范为 RFC 9846），完整握手只需一个往返，且只保留 AEAD 加密算法。
