Кратко

  • RFC 9345 позволяет владельцу конечного сертификата подписать ограниченный Delegated Credential. Обладатель соответствующего закрытого ключа завершает совместимые TLS/DTLS 1.3 handshakes, а пир по-прежнему проверяет исходную цепочку и ожидаемую идентичность.
  • Семь дней — предел по умолчанию, а не немедленный отзыв отдельного объекта. Украденный делегированный ключ пригоден до окончания; досрочное прекращение внутри этой модели требует более широкого отзыва подписавшего сертификата.
  • Надёжная запись соединяет opt-in сертификата, точные байты Credential, событие подписи, происхождение ключа, разрешённые edge, negotiation, CertificateVerify, fallback, resumption и отказ после срока.

Что оказалось по другую сторону доверенной границы

Долговременный ключ сертификата хранится в backend signer. Он подписывает новый публичный ключ, конечное время и алгоритм. Edge получает или самостоятельно создаёт соответствующий закрытый ключ и может подписывать CertificateVerify без обращения к backend на каждом соединении.

Практический эффект значителен: edge подтверждает TLS-идентичность перед поддерживающим клиентом. Но он не продлевает сертификат, не меняет имена, не вступает в отношения с CA, не выпускает следующий Credential своим коротким ключом и не заставляет старый клиент принять extension.

Поэтому Delegated Credential — не краткосрочный X.509-сертификат. Структура специально бедна: время, ожидаемый алгоритм CertificateVerify и SubjectPublicKeyInfo. Подпись охватывает полный сертификат, объект, алгоритм и отдельный контекст для клиента или сервера. Делегируется одна функция, а не богатые возможности subordinate CA.

Разрешение записано в сертификате

Конечный сертификат обязан содержать DelegationUsage и KeyUsage digitalSignature. Без любого элемента endpoint отказывает. Явный opt-in не даёт временному доступу к обычному ключу или старому signature oracle незаметно превратиться в право выпускать будущие полномочия.

Для server authentication клиент сначала посылает extension 34 и допустимые алгоритмы в ClientHello. После этого сервер может добавить один Credential к конечному CertificateEntry. Для client authentication сервер объявляет поддержку в CertificateRequest. Незапрошенный объект — ошибка протокола.

Получатель обычно проверяет цепочку и ожидаемое имя. Далее он проверяет время, стандартный максимум, срок сертификата, обе алгоритмические связи, opt-in и подпись объекта. Только тогда делегированный публичный ключ проверяет CertificateVerify.

Здесь четыре разных решения. CA подтверждает сертификат. Владелец разрешает узкое действие. Edge доказывает владение коротким ключом. Приложение выдаёт роли каналу. Успешный TLS сам не разрешает HTTP-команду или денежную операцию.

Короткая жизнь не возвращает украденный экземпляр

Если профиль не задаёт иного, остаток срока не превышает семи дней и не выходит за конец сертификата. Cloudflare документирует более короткую продуктовую политику: созданные Keyless Credentials перестают действовать в течение 24 часов после отключения. Это выбор провайдера ниже предела RFC.

Ни один срок не означает «сейчас». RFC 9345 не добавляет ранний отзыв для одного Credential. Остановка выпуска и удаление с штатного edge мешают легитимному применению, но не забирают скопированный ключ. Можно ждать конца или отзывать исходный сертификат, затрагивая больше соединений.

Часы становятся зависимостью. valid_time отсчитывается от notBefore сертификата, а клиент применяет своё время. На границе skew вызывает отказы, которых зелёный серверный inventory не объясняет. Нужны перекрытие, запас и телеметрия.

Session resumption сохраняет старое решение. Если пир кэширует и заново валидирует цепочку, он должен так же хранить и проверять Credential. Иначе просроченное основание переживёт полный handshake.

Откуда взялся закрытый ключ

RFC 9677 описывает два CDNI-пути. Downstream CDN создаёт пару и отправляет наружу только публичный ключ для подписи. Приватный ключ не путешествует, но enrollment должен доказать источник. Либо upstream доставляет шифрованный приватный ключ вместе с Credential. Централизация проще, зато остаются архивируемый ciphertext и ключ расшифрования.

RFC не рекомендует передавать private keys через metadata interface. При таком выборе шифрование обязательно, но нет forward secrecy против будущей компрометации transport key. Окончание запрещает новые handshakes, не удаляет архив.

Один Credential на много узлов снижает нагрузку и расширяет blast radius. Отдельный на edge улучшает атрибуцию и умножает подписи, доставку, состояния и риск просрочки. Граница должна быть настолько малой, насколько система умеет надёжно обновлять при частичном отказе.

Fallback остаётся действующим контуром

Механизм работает только с TLS/DTLS 1.3 и после объявления. Рекомендованная запись IANA доказывает назначение, не распространённость. Cloudflare называет Firefox 77 и новее, одновременно отмечая малое число клиентов и CA.

Смешанная среда требует remote signing, обычного сертификатного ключа либо второго сертификата. Remote signing возвращает latency и backend dependency. Копия долгого ключа возвращает долгий риск. Второй сертификат возвращает отдельное продление и отзыв.

BoringSSL тестирует запрет в TLS 1.2, различие алгоритмов и обычный сертификат при отсутствии подходящего DC. NSS выбирает делегированный приватный ключ для подписи и публичный для проверки. Наличие ветки в коде не подтверждает её выполнение на конкретном wire.

Реестр одной делегации

Записываются fingerprint, serial, names, validity, KeyUsage и DelegationUsage сертификата; хэши Credential и SPKI; роль, алгоритмы, рассчитанный конец; утверждающий и операция долговременного ключа.

Отдельно: кто создал private key, канал enrollment/доставки, разрешённые edges, подтверждения и fan-out. Для handshake: client offer, выбор, validation, CertificateVerify, версия и fallback.

При завершении: прекращение выпуска, удаление по узлам, последний возможный момент, решение об отзыве сертификата, resumption и negative test после окончания. Пустой экран показывает один локальный state, но не исчезновение копий.

Источники