# 密钥轮换（Key Rotation）是什么？定义、例子与常见误区

> 密钥轮换是按计划或在安全事件后，用新生成的密钥替换旧密钥，以限制密钥泄露造成损失的做法。

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

密钥轮换就是停用旧密钥、改用新生成的密钥。对 TLS 服务器来说，通常发生在证书续期时：不再用旧[私钥](https://ssl.sh/zh/glossary/private-key/)生成新 CSR，而是重新生成一对密钥。Certbot 默认每次续期都会生成新私钥，除非加了 `--reuse-key`。轮换同样适用于 CA 密钥（随时间换用新的根证书和中间证书），也适用于 [Session Ticket](https://ssl.sh/zh/glossary/session-ticket/) 密钥，服务器应频繁更换它，才能保住前向安全。

## 为什么重要
一把从不更换的密钥会在备份、旧服务器、离职员工的电脑里不断积累暴露面，定期轮换可以限制一次未被发现的泄露能被利用多久。随着证书最长有效期缩短（2026 年 3 月 15 日起 200 天，2029 年 3 月 15 日起 47 天），自动化续期让"每次续期都换密钥"几乎没有额外成本。不过，凡是直接引用密钥的地方都要配合轮换，例如[证书固定](https://ssl.sh/zh/glossary/certificate-pinning/)、DANE 的 [TLSA](https://ssl.sh/zh/glossary/tlsa/) 3 1 1 记录：先发布新密钥的哈希，等缓存过期，再切换。使用云厂商证书服务时，也要确认重新申请时是否生成了新的 CSR 和私钥。

## 例子
```bash
# 提前生成下一把密钥，并在切换前发布它的 TLSA 记录
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out next.key
openssl pkey -in next.key -pubout -outform DER | openssl sha256
# -> 在现有记录旁新增 "_25._tcp.mail.example.com. IN TLSA 3 1 1 <hash>"
```

## 常见误区
- **续期证书就等于轮换了密钥。** 只有重新生成密钥才算，有些工具和很多手工流程会沿用旧密钥。
- **只有被攻破后才需要轮换。** 定期轮换能限制那些你根本没发现的泄露。
- **轮换密钥必须吊销旧证书。** 吊销针对的是密钥泄露；常规轮换后，旧证书可以自然过期。

## 相关术语

- [私钥](https://ssl.sh/zh/glossary/private-key/): 私钥是非对称密钥对中保密的那一半，TLS 服务器用它证明自己拥有证书里的那把公钥。
- [证书续期](https://ssl.sh/zh/glossary/certificate-renewal/): 证书续期是在证书到期前申请一张新证书来替换它，最好全自动完成并同时更换密钥对。
- [证书锁定](https://ssl.sh/zh/glossary/certificate-pinning/): 证书锁定是客户端侧的一项检查：只有服务器证书链中包含事先配置好的特定证书或公钥时，客户端才接受这次连接。
- [TLSA 记录](https://ssl.sh/zh/glossary/tlsa/): TLSA 记录是一种 DNS 记录，声明某个端口和协议上的 TLS 服务必须出示哪张证书或哪个公钥，供 DANE 校验使用。
- [DANE](https://ssl.sh/zh/glossary/dane/): DANE 是一种利用经 DNSSEC 签名的 TLSA 记录，把 TLS 服务器的证书或公钥与其域名绑定起来的协议。
- [Session Ticket](https://ssl.sh/zh/glossary/session-ticket/): Session Ticket 是服务器交给客户端保管的加密会话状态，客户端下次连接时出示它即可恢复会话，服务器无需保存任何状态。
- [HSM](https://ssl.sh/zh/glossary/hsm/): HSM 是一种防篡改的硬件设备，在内部生成、保存并使用密钥，私钥不会以明文形式离开设备。
- [证书吊销](https://ssl.sh/zh/glossary/revocation/): 证书吊销是 CA 在证书到期前宣布其作废的操作，通过 CRL 或 OCSP 对外公布，使客户端不再信任这张证书。
