Certificate Transparency (CT) Logs

Letzte Änderung: | Gesamte Dokumentation anzeigen

Certificate Transparency (CT) ist ein System zur Protokollierung und Überwachung der Ausstellung eines TLS Zertfikates. CT ermöglicht es jederman, Zertifikatsausstellungen zu überprüfen und zu überwachen und diese Funktionen haben zu zahlreichen Verbesserungen des CA-Ökosystems und der Websicherheit geführt. Aus diesem Ergebnis ist CT sehr schnell zu einem kritischen Teil der Infrastruktur geworden.

Let's Encrypt sendet alle ausgestellten Zertifikate zu CT Logs. Wir betreiben auch zwei öffentliche CT Log namens Oak und Sapling. Alle öffentlich vertrauenswürdigen Zertifizierungsstellen sind herzlich willkommen, an unsere Log zu senden. Viele Zertifikate der Zertifizierungsstelle wurden bereits in unsere CT-Protokolle aufgenommen. Wenn Sie eine Zertifizierungsstelle betreiben und Ihr Aussteller nicht in unserer Liste der akzeptierten Emittenten ist, schreiben Sie bitte ein Problem hier ein.

Melden Sie sich für Benachrichtigungen in der CT-Ankündigungen Kategorie unseres Community-Forums an, um wichtige Ankündigungen über unsere CT-Protokolle zu sehen.

Finanzierung

Wenn Ihre Organisation helfen möchte, diese Arbeit fortzusetzen, bitte besuchen Sie Sponsor werden.

Architektur

Schauen Sie sich unseren Blog an und sehen Sie Wie Let's Encrypt Runs CT Logs!

Log Monitoring

Let's Encrypt hat ein Open-Source CT log Monitoringtool entwickelt namens CT Woodpecker. Wir benutzen das Tool, um die Stabilität und Integrität unser eigenen Logs zu überwachen und wir hoffen, dass andere es als nützlich empfinden.

CT Logs

Informationen über den verschiedenen Lebenszyklus finden Sie hier.

Produktion

Testen

Sunlight


Log-Operationen

Um die enthaltenen Wurzeln für ein bestimmtes CT-Log aufzuzählen, können Sie den folgenden Befehl im Terminal Ihrer Wahl ausführen:

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

Das Senden von Zertifikaten in ein CT-Log wird normalerweise von den Behörden des Zertifikats bearbeitet. Wenn Sie damit experimentieren möchten, holen Sie zunächst ein beliebiges PEM kodiertes Zertifikat von unserer Lieblings-Website. Kopieren und fügen Sie den folgenden Block in Ihr Terminal ein.

$ 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

Bevor ein Zertifikat eingereicht werden kann, muss es in einer speziellen Struktur JSON kodiert sein. Du kannst den JSON Generator zur Verfügung gestellt von https://crt.sh/gen-add-chain zur Durchführung dieser Aufgabe benutzen. Das Dienstprogramm crt.sh gibt ein JSON-Paket zurück. Laden Sie das Bundle auf Ihren Computer herunter, benennen Sie die Datei um, falls nötig und führen den folgenden Befehl aus, um die Add-chain-Operation auszuführen (RFC 6962 Abschnitt 4.1), um das Zertifikat in ein CT-Log einzureichen. Die Ausgabe enthält eine Signatur, die tatsächlich ein SCT ist. Mehr zur Unterschrift in einem Moment.

$ curl \
    -X POST \
   --data @example-json-bundle.json \
    -H "Content-Type: application/json" \
    -H "User-Agent: lets-encrypt-ct-log-example-1.0" \
   https://oak.ct.letsencrypt.org/2020/ct/v1/add-chain
{"sct_version":0,"id":"5xLysDd+GmL7jskMYYTx6ns3y1YdESZb8+DzS/JBVG4=","timestamp":1576689972016,"extensions":"","signature":"BAMARzBFAiEA4OmuTcft9Jq3XLtcdZz9XinXCvYEY1RdSQICXayMJ+0CIHuujkKBLmQz5Cl/VG6C354cP9gxW0dfgMWB+A2yHi+E"}

Let's Encrypt sendet alle ausgestellten Zertifikate zu CT Logs. Wir betreiben auch CT Log für uns selber und möchten alle öffentlichen Zertifikatsaussteller ermutigen, dasselbe zu tun.

$ base64 -d <<< "5xLysDd+GmL7jskMYYTx6ns3y1YdESZb8+DzS/JBVG4=" | xxd -p -c 64 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
E7:12:F2:B0:37:7E:1A:62:FB:8E:C9:0C:61:84:F1:EA:7B:37:CB:56:1D:11:26:5B:F3:E0:F3:4B:F2:41:54:6E

Mit Hilfe des Unterschriftsfeldes können wir überprüfen, ob das Zertifikat bei ein Log eingereicht wurde. Mit unserem SCT Führerkönnen Sie diesen Wert weiter dekodieren.

$ base64 -d <<< "BAMARzBFAiEA4OmuTcft9Jq3XLtcdZz9XinXCvYEY1RdSQICXayMJ+0CIHuujkKBLmQz5Cl/VG6C354cP9gxW0dfgMWB+A2yHi+E" | xxd -p -c 16 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
04:03:00:47:30:45:02:21:00:E0:E9:AE:4D:C7:ED:F4
9A:B7:5C:BB:5C:75:9C:FD:5E:29:D7:0A:F6:04:63:54
5D:49:02:02:5D:AC:8C:27:ED:02:20:7B:AE:8E:42:81
2E:64:33:E4:29:7F:54:6E:82:DF:9E:1C:3F:D8:31:5B
47:5F:80:C5:81:F8:0D:B2:1E:2F:84