Журналы Certificate Transparency (CT)

Последнее обновление: September 4, 2026
Вся документация

Certificate Transparency (CT) — это система регистрации и мониторинга выдачи TLS сертификатов. CT значительно расширяет возможности любого отслеживать и изучать выдачу сертификатов, значительно улучшая экосистему Центров Сертификации и веб-безопасность. Система CT быстро становится критически важной инфраструктурой.

Let's Encrypt отправляет все выданные нами сертификаты для включения в журналы CT. Мы также управляем CT журналами. Все общедоступные доверенные центры сертификации могут отправлять сертификаты в наши журналы. Корневые сертификаты многих удостоверяющих центров уже включены в наши CT журналы. Если вы управляете центром сертификации и ваш издатель отсутствует в нашем списке доверенных издателей, пожалуйста, создайте обращение здесь.

Зарегистрируйтесь для получения уведомлений в CT объявлениях нашего сообщества, чтобы увидеть основные объявления наших CT журналов.

Финансирование

Если Ваша организация хотела бы помочь нам продолжить работу, пожалуйста станьте нашим спонсором или донатером.

Логи CT

Информацию о различных этапах жизненного цикла, через которые проходит CT-лог, можно найти здесь.

Sunlight

Let's Encrypt в настоящее время осуществляет деятельность static-ct логи базируются на Sunlight.

Информация, включающая принятые roots, публичные ключи, ID логов и интервалы сегментов, доступна на целевой странице каждого лога; ссылки на них приведены ниже.

Sycamore и Willow — это наши рабочие CT-логи, принимающие сертификаты от доверенных центров сертификации (CA).

Twig — это тестовый журнал (log), принимающий сертификаты как от доверенных центров сертификации (CA), так и от некоторых дополнительных тестовых центров сертификации, включая среду подготовки (staging environment) сервиса Let's Encrypt.

RFC 6962 Logs EOL

Ранее Let's Encrypt вела журналы на базе Trillian, реализуя API согласно стандарту RFC 6962. Для получения дополнительной информации, смотрите план окончания поддержки RFC 6962 Certificate Transparency logs.

Действия с журналами

В приведенных ниже примерах используется сегмент Sycamore 2026h2. Наши журналы разделены на временные сегменты; каждый сегмент принимает только те сертификаты, срок действия которых истекает в рамках соответствующего временного интервала. Поэтому на главной странице журнала выберите тот сегмент, который соответствует вашему сертификату.

Чтобы перечислить корневые сертификаты, включенные в конкретный CT-лог, можно выполнить следующую команду в терминале по вашему выбору:

$ for i in $(curl -s https://log.sycamore.ct.letsencrypt.org/2026h2/ct/v1/get-roots | jq -r '.certificates[]'); do
    echo '------'; base64 -d <<< "${i}" | openssl x509 -inform der -noout -issuer -serial
done

Отправка сертификатов в CT-лог обычно осуществляется удостоверяющими центрами. Если хотите поэкспериментировать с этим, начните с получения произвольного сертификата в кодировке PEM с нашего любимого веб-сайта. Скопируйте и вставьте следующую команду в терминал.

$ echo | \
openssl s_client \
    -connect "letsencrypt.org":443 \
    -servername "letsencrypt.org" \
    -verify_hostname "letsencrypt.org" 2>/dev/null | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > example.crt

Перед отправкой сертификат должен быть закодирован в формате JSON с помощью специальной структуры. Вы можете использовать генератор JSON, предоставляемый https://crt.sh/gen-add-chain для выполнения этой задачи. Утилита crt.sh возвращает JSON. Скачайте пакет на свой компьютер, при необходимости переименуйте файл и выполните следующую команду для осуществления операции add-chain (RFC 6962 секция 4.1) чтобы отправить сертификат в CT-лог. Наши статические CT-логи API поддерживают тот же API для отправки данных, что и логи, соответствующие стандарту RFC 6962. В результате будет получена подпись, которая на самом деле является SCT. Подробнее о подписи в данный момент.

$ curl \
    -X POST \
   --data @example-json-bundle.json \
    -H "Content-Type: application/json" \
    -H "User-Agent: lets-encrypt-ct-log-example-1.0" \
   https://log.sycamore.ct.letsencrypt.org/2026h2/ct/v1/add-chain
{"sct_version":0,"id":"bP5QGUOoXqkWvFLRM+TcyR7xQRx9JYQg0XOAnhgY6zo=","timestamp":1783737642362,"extensions":"AAAFABSjxQU=","signature":"BAMASDBGAiEAzgwvZXjfPivGYoUr2p9yvFsi/vgA3DHUX+vL0Izm2g8CIQCvtWiPPUTYmFztu9ntrtFrg65JVuuCAZKDd+C+QD6wig=="}

Чтобы подтвердить, что SCT был подписан Sycamore 2026h2, мы используем поле id из приведенного выше ответа и подставляем его в следующую команду. Результатом является Log ID для данного сегмента; его можно сравнить с идентификатором лога, указанным на главной странице этого лога.

$ base64 -d <<< "bP5QGUOoXqkWvFLRM+TcyR7xQRx9JYQg0XOAnhgY6zo=" | xxd -p -c 64 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
6C:FE:50:19:43:A8:5E:A9:16:BC:52:D1:33:E4:DC:C9:1E:F1:41:1C:7D:25:84:20:D1:73:80:9E:18:18:EB:3A

С помощью области подписи можно проверить, был ли сертификат передан в лог. Используя наше подробное руководство по SCT, вы можете дополнительно декодировать это значение.

$ base64 -d <<< "BAMASDBGAiEAzgwvZXjfPivGYoUr2p9yvFsi/vgA3DHUX+vL0Izm2g8CIQCvtWiPPUTYmFztu9ntrtFrg65JVuuCAZKDd+C+QD6wig==" | xxd -p -c 16 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
04:03:00:48:30:46:02:21:00:CE:0C:2F:65:78:DF:3E
2B:C6:62:85:2B:DA:9F:72:BC:5B:22:FE:F8:00:DC:31
D4:5F:EB:CB:D0:8C:E6:DA:0F:02:21:00:AF:B5:68:8F
3D:44:D8:98:5C:ED:BB:D9:ED:AE:D1:6B:83:AE:49:56
EB:82:01:92:83:77:E0:BE:40:3E:B0:8A