«Too many certificates already issued» при выпуске сертификата для нового поддомена: как считаются лимиты центра сертификации и как их не трогать

Что было. При выпуске сертификата для очередного поддомена отказ: «Too many certificates already issued for: example.xyz». За предыдущие недели на разные поддомены этого домена было выпущено около десяти сертификатов, в том числе шесть на одно и то же имя в ходе тестов.

Как считаются лимиты. Основной лимит считается на регистрируемый домен (второй уровень, example.xyz), а не на каждое имя: все поддомены складываются. Второй лимит на дубликаты: одинаковый набор имён можно выпустить лишь несколько раз в неделю. Третий на неудачные проверки на имя в час. Точные числа менялись и растут со временем, но принцип прежний: лимиты про количество выпусков, а не про количество имён в сертификате. Продления, инициированные по сигналу самого центра (ARI) в новых клиентах, из лимитов выведены.

Что предложили.

  • Тестировать против тестовой среды (--test-cert/--staging), где лимиты на порядки выше; боевые сертификаты выпускать один раз, когда всё отлажено.
  • Один сертификат со списком имён (SAN) вместо десяти отдельных на поддомены, либо wildcard через DNS-проверку.
  • Продлевать только у истечения (certbot renew делает это сам), не перевыпускать «на всякий случай».

Типичные причины, по которым лимит сгорает незаметно.

  1. certbot certonly (не renew) в cron или в скрипте деплоя: каждый запуск это новый выпуск.
  2. Контейнер без тома для /etc/letsencrypt: после каждого перезапуска клиент думает, что сертификата нет, и выпускает заново. Проверка: в /etc/letsencrypt/archive/<домен>/ много файлов cert*.pem за последние дни.
  3. Несколько серверов или инструментов (панель, обратный прокси, ручной certbot) независимо выпускают сертификаты на один домен.
  4. Отладка проверки на боевой среде вместо тестовой: серия неудач блокирует имя на час.

Как выйти из блокировки. Никак, кроме ожидания: окно скользящее, обычно достаточно нескольких часов. На это время можно взять сертификат у другого центра с поддержкой ACME (их несколько) или временно обслуживать сайт старым сертификатом, если он ещё действителен.

Проверка истории выпусков. Публичные журналы прозрачности сертификатов показывают всё, что выпускалось на домен; по ним видно, откуда взялись «лишние» выпуски, и сколько ждать.

Лимиты описаны в документации Let’s Encrypt.