Certificate Transparency (CT) je systém pro zaznamenávání a sledování vydávání certifikátů TLS. CT výrazně zlepšuje možnosti všech uživatelů sledovat a zkoumat vydávání certifikátů. Tyto možnosti vedly k řadě zlepšení ekosystému certifikačních autorit i zabezpečení webu. CT se proto rychle stává kritickou infrastrukturou.
Všechny vydané certifikáty odesíláme do logů CT. Logy CT také sami provozujeme. Do našich logů mohou odesílat záznamy všechny veřejně důvěryhodné certifikační autority. Naše logy CT již zahrnují kořenové certifikáty mnoha certifikačních autorit. Pokud provozujete certifikační autoritu a certifikát vašeho vydavatele není v našem seznamu přijímaných vydavatelů, nahlaste problém zde.
Chcete-li dostávat důležitá oznámení týkající se našich logů CT, přihlaste se na komunitním fóru k odběru kategorie oznámení CT.
Pokud nám vaše organizace chce pomoci v této práci pokračovat, zvažte sponzorský nebo jiný finanční příspěvek.
Informace o jednotlivých stavech životního cyklu, kterými log CT prochází, najdete zde.
Let's Encrypt v současnosti provozuje logy static-ct založené na softwaru Sunlight.
Informace o přijímaných kořenových certifikátech, veřejných klíčích, identifikátorech logů a časových intervalech jednotlivých částí logu najdete na úvodní stránce každého logu. Odkazy jsou uvedeny níže.
Sycamore a Willow jsou naše produkční logy CT, které přijímají certifikáty od důvěryhodných certifikačních autorit.
Twig je testovací log, který přijímá certifikáty od důvěryhodných certifikačních autorit i od některých dalších testovacích autorit, včetně Staging prostředí Let's Encrypt.
Let's Encrypt dříve provozovala logy založené na systému Trillian, které implementovaly API RFC 6962. Další informace najdete v plánu ukončení provozu našich logů Certificate Transparency podle RFC 6962.
Následující příklady používají část logu Sycamore 2026h2. Naše logy jsou rozděleny do časových částí. Každá část přijímá pouze certifikáty, jejichž datum vypršení spadá do jejího intervalu. Na úvodní stránce logu proto vyberte část odpovídající vašemu certifikátu.
Seznam kořenových certifikátů zahrnutých v konkrétním logu CT získáte spuštěním následujícího příkazu v terminálu:
$ 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
Odesílání certifikátů do logu CT obvykle zajišťují certifikační autority. Chcete-li si tento postup vyzkoušet, nejprve z našeho oblíbeného webu načtěte libovolný certifikát ve formátu PEM. Zkopírujte následující blok a vložte jej do terminálu.
$ 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
Před odesláním musí být certifikát zakódován ve formátu JSON ve speciální struktuře. K tomu můžete použít generátor JSON na adrese https://crt.sh/gen-add-chain. Nástroj crt.sh vrátí balíček JSON. Stáhněte balíček do počítače, v případě potřeby soubor přejmenujte a následujícím příkazem proveďte operaci add-chain (RFC 6962, část 4.1), která certifikát odešle do logu CT. Naše logy s rozhraním Static CT API používají pro odesílání certifikátů stejné API jako logy RFC 6962. Výstup bude obsahovat podpis, který je ve skutečnosti SCT. K podpisu se za chvíli vrátíme podrobněji.
$ 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=="}
Abychom ověřili, že SCT podepsala část logu Sycamore 2026h2, použijeme pole id z výše uvedené odpovědi v následujícím příkazu. Výsledkem je Log ID dané části, které můžete porovnat s hodnotou Log ID uvedenou na úvodní stránce logu.
$ 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
Pomocí pole signature můžeme ověřit, že byl certifikát odeslán do logu. Tuto hodnotu můžete dále dekódovat podle našeho podrobného průvodce 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