SSL: автоматическое обновление

Ссылка на сертификат — справка для разработчиков

Адреса, форматы, коды ответа, условные запросы, лимиты и правила безопасности личной ссылки на сертификат — для своих интеграций и ИИ-агентов.

Личная ссылка отдаёт действующий сертификат подписки без входа в кабинет — для скриптов, задач по расписанию и собственных интеграций. Создаётся в кабинете: карточка сертификата → «Установка» → «Ссылка для сервера».

Адреса

https://api.zrazu.com/ssl-pull/zsp_ВАШ_ТОКЕН — базовый адрес, к нему добавляется название файла:

ЗапросЧто возвращает
GET https://api.zrazu.com/ssl-pull/zsp_ВАШ_ТОКЕН/fullchain.pemсертификат сайта, за ним промежуточные сертификаты центра — для nginx, Apache 2.4.8+, Caddy, HAProxy, Kubernetes
GET https://api.zrazu.com/ssl-pull/zsp_ВАШ_ТОКЕН/cert.pemтолько сертификат сайта
GET https://api.zrazu.com/ssl-pull/zsp_ВАШ_ТОКЕН/chain.pemтолько промежуточные сертификаты

Тип ответа — application/x-pem-file, текст PEM. Закрытого ключа ссылка не отдаёт и не принимает: ключ остаётся у вас, а следующие части подписки выпускаются на тот же ключ.

Что именно отдаётся

Действующая версия подписки — последний выпущенный сертификат. Если он отозван или срок истёк, ссылка отвечает 404: предыдущую версию не отдаём, потому что центр сертификации мог отозвать её при замене. Когда появляется следующая часть подписки, по той же ссылке начинает отдаваться она — ссылку менять не нужно.

Если сертификат перевыпускали с новым ключом, ссылка отдаст сертификат на новый ключ. Поэтому перед установкой сверяйте открытый ключ сертификата со своим закрытым ключом — так делают все скрипты в наших инструкциях:

openssl x509 -in fullchain.pem -noout -pubkey | openssl sha256
openssl pkey -in key.pem -pubout | openssl sha256

Строки должны совпасть.

Коды ответа

КодКогда
200сертификат в теле ответа
304условный запрос, сертификат не изменился
404ссылка неизвестна, отключена или просрочена, либо в подписке сейчас нет действующего сертификата — ответ одинаковый, чтобы не подсказывать, существовала ли ссылка
429слишком много запросов; заголовок Retry-After — через сколько секунд можно снова

Условные запросы

Ответ содержит ETag (меняется вместе с версией сертификата) и Last-Modified (время выпуска). Запрос с If-None-Match или If-Modified-Since получит 304, пока сертификат тот же:

curl -fsS --etag-save etag.txt --etag-compare etag.txt -o fullchain.pem "https://api.zrazu.com/ssl-pull/zsp_ВАШ_ТОКЕН/fullchain.pem"

Условные запросы не обязательны: файл маленький, и сравнить его с установленным (cmp) так же просто.

Лимиты

  • 60 запросов в час на одну ссылку — для задачи раз в сутки или даже раз в час этого с большим запасом;
  • 300 запросов в минуту с одного IP-адреса.

Безопасность

  • Ссылка — секрет уровня «не публиковать»: она отдаёт только публичный сертификат, но у кого она есть, тот видит, когда сертификат забирают.
  • Ответы не кэшируются (Cache-Control: no-store), не индексируются и не передают ссылку в Referer.
  • Ссылку показываем один раз; у нас хранится только её отпечаток. Новая ссылка в карточке сертификата сразу отключает предыдущую; там же — «Отключить».
  • Ссылка действует до конца подписки.

Для ИИ-агентов

Полная документация ZRAZU в формате для языковых моделей: https://zrazu.com/llms.txt (оглавление) и https://zrazu.com/llms-full.txt (все страницы). Каждая страница документации есть и в Markdown — добавьте .md к адресу без косой черты в конце.

Эта страница в Markdown