# too many certificates already issued：Let's Encrypt 速率限制

> Let's Encrypt 返回 rateLimited 或 too many certificates，说明触发了签发限制。教你看懂是哪一项、等多久恢复、以后怎么避免。

Source: https://ssl.sh/zh/errors/lets-encrypt-rate-limit/
Last updated: 2026-11-10

**`rateLimited` 报错的意思是：你用完了 Let's Encrypt 的某一项签发额度，新账户、新订单或新证书请求被拒绝了。** 最常见的情况是调试时反复为同一组域名重新签发证书，触发“同一组标识符每 7 天最多 5 张”的限制。

## 快速修复

额度用完后无法重置，只能等它按时恢复；期间先停止重试、装回已有的证书。报错原文写明了是哪个限制，以及 `retry after` 的时间（UTC）。然后：

1. **停止重试。** 每次失败都可能继续消耗额度。先停掉循环调用 ACME 客户端的 cron、CI 流水线或不断重启的容器。
2. **用已有的证书。** Certbot 把签过的证书都留在 `/etc/letsencrypt/archive/<名称>/`，acme.sh 在 `~/.acme.sh/<名称>/`。找出最新的有效证书装上。
3. **到测试环境排错。** 调通之前一直用 staging：

```bash
certbot certonly --staging -d example.com -d www.example.com
acme.sh --issue --staging -d example.com -w /var/www/html
```

## 原因

最常触发的是“相同标识符组合每 7 天 5 张”这一项。以下数字来自 Let's Encrypt 官方速率限制页面（页面最后更新于 2026 年 8 月 5 日）。限制会调整，一切以官方页面为准。

| 限制 | 额度 | 恢复速度 | 能否申请提额 |
|---|---|---|---|
| 相同标识符组合的新证书 | 每 7 天 5 张 | 每 34 小时 1 张 | 不能 |
| 每个注册域名的新证书 | 每 7 天 50 张 | 每 202 分钟 1 张 | 可申请 |
| 每个账户的新订单 | 每 3 小时 300 个 | 每 36 秒 1 个 | 可申请 |
| 每账户每标识符验证失败 | 每小时 5 次 | 每 12 分钟 1 次 | 不能 |
| 每账户每标识符连续验证失败 | 1,152 次 | 每天 1 次，成功一次即清零 | 在自助页面解除暂停 |
| 每个 IP 新注册账户 | 每 3 小时 10 个 | 每 18 分钟 1 个 | 不能 |
| 每个 IPv6 /48 新注册账户 | 每 3 小时 500 个 | 每 22 秒 1 个 | 不能 |

### 1. 重复签发（最常见）

- **确认：** 报错里有 “exact set”（完全相同的一组）字样。在 [CT 日志查询](https://ssl.sh/zh/tools/ct-search/)里搜这个域名，能看到最近一周签了好几张域名完全相同的证书。
- **常见原因：** 每次部署都删掉 ACME 客户端的配置目录；Docker 容器没把 `/etc/letsencrypt` 挂到持久卷；测试时一直加 `--force-renewal`。
- **修复：** 等额度恢复，先用已有证书顶上，并把客户端的状态目录持久化。

### 2. 同一注册域名下证书太多

- **确认：** 报错提到的是注册域名（如 `example.com`），而不是完整的域名列表。通常是给大量子域名分别签证书导致的。
- **修复：** 把多个域名合并进少量证书（classic 配置下一张证书最多 100 个标识符）；或用 DNS-01 签 [通配符证书](https://ssl.sh/zh/glossary/wildcard-certificate/)，国内 DNS 用 DNSPod、阿里云解析的 API 都能自动完成；托管商可以申请提额。

### 3. 反复验证失败

- **确认：** 报错提到 failed authorizations。要解决的是验证本身，见 [certbot 连接超时](https://ssl.sh/zh/errors/certbot-timeout-during-connect/)、[certbot 403 unauthorized](https://ssl.sh/zh/errors/certbot-unauthorized-403/)、[NXDOMAIN](https://ssl.sh/zh/errors/certbot-dns-problem-nxdomain/)。
- **修复：** 先在 staging 上把验证调通。如果长期失败导致某个域名被暂停签发，报错里会带一个自助页面链接，在那里解除暂停。

### 4. 同一 IP 注册了太多账户

- **确认：** 报错是 “too many new registrations”。一般是脚本每签一张证书就注册一个新账户。
- **修复：** 注册一个账户，所有证书共用。

## 各环境修法

各 ACME 客户端的原则相同：只在证书进入续期窗口时续期，排错一律用 staging，失败后不要自动高频重试。

**Certbot：** `certbot certificates` 列出已有证书；`certbot renew` 只续期进入续期窗口的证书，所以 cron 里别加 `--force-renewal`。Docker 里把 `/etc/letsencrypt` 挂出来。

**acme.sh：** `~/.acme.sh` 放在持久卷上；排错时用 `--staging`（或 `--test`），定时任务里去掉 `--force`。

**宝塔 / 1Panel：** 面板申请失败后不要连续点击重试。先在面板日志里看具体失败原因，排除后再申请。如果你同时又用命令行客户端给相同域名签证书，两边会互相“抢单”，订单数翻倍。

**Kubernetes cert-manager：** 卡在失败循环里的 Certificate 会持续消耗额度。先用 staging 的 ClusterIssuer 调到 Ready，见 [cert-manager 证书一直不 Ready](https://ssl.sh/zh/errors/cert-manager-certificate-not-ready/)。

## 不要这样做

下面这些做法都不会退回额度，有的还会继续消耗额度或让访客看到警告。

- **吊销后重签，想“重置”限制。** 吊销不会退回额度。
- **注册新账户绕过限制。** 域名和重复证书限制是全局的，注册账户本身也有每 IP 限制。
- **等额度期间给正式站点挂自签名证书。** 访客会看到安全警告。宁可继续用旧证书，或临时换用客户端支持的其他 ACME CA。
- **让坏掉的续期任务每几分钟跑一次。** 在 staging 修好后，每天跑一两次就够。
