憑證透明度 (CT) 日誌

以丹麥語檢視

以德語檢視

以西班牙語檢視

以法語檢視

以希伯來語檢視

以匈牙利語檢視

以日語顯示

以韓語檢視

以俄語檢視

以烏克蘭語檢視

閱讀簡體中文頁面

使用正體中文閲讀本網頁。

上次更新: | 查看所有文件

憑證透明度 (Certificate Transparency,CT) 是一個記錄和監控 TLS 憑證發行的系統。 CT 大幅提升了所有人監控和研究憑證發行的能力,而這些能力促成了 CA 生態系統和網路安全的許多改進。 因此,CT 正迅速成為關鍵基礎設施。

Let's Encrypt 會將我們發行的所有憑證提交到 CT 日誌。 我們還運營兩個每年分片的 CT 日誌,分別名為 Oak 和 Sapling。 歡迎所有公開信任的憑證授權單位提交到我們的日誌。 許多憑證授權單位的根憑證已包含在我們的 CT 日誌中。 如果您運營憑證授權單位,而您的簽發者未在我們的接受簽發者列表中,請在此提交問題。

請在我們社群論壇的 CT 公告類別中註冊接收通知,以查看關於我們 CT 日誌的重大公告。

資金

如果您的組織希望協助我們繼續這項工作,請考慮贊助或捐款

架構

請查看我們的部落格,了解Let's Encrypt 如何運作 CT 日誌

日誌監控

Let's Encrypt 建立了一個名為 CT Woodpecker 的開源 CT 日誌監控工具。 我們使用此工具監控自身日誌的穩定性和合規性,並希望其他人也會覺得它有用。

CT 日誌

有關 CT 日誌所經歷的各種生命週期狀態的資訊,請參閱此處

生產環境

測試

Sunlight


日誌操作

若要列舉特定 CT 日誌中包含的根憑證,您可以在您選擇的終端機中執行以下命令

$ 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

將憑證提交到 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 編碼。您可以使用 https://crt.sh/gen-add-chain 提供的 JSON 產生器來執行此任務。crt.sh 工具將返回一個 JSON 套件。將套件下載到您的電腦,如果需要,可以重新命名檔案,並發出以下命令以執行 add-chain 操作 (RFC 6962 第 4.1 節) 將憑證提交到 CT 日誌。輸出將包含一個簽名,它實際上是一個 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://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"}

為了確認 CT 日誌是由 Oak 2020 分片簽署的,我們使用上述命令中的 id 欄位,並透過以下命令運行。結果將輸出 CT 日誌的日誌 ID。

$ 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

使用簽名欄位,我們可以驗證憑證是否已提交到日誌。使用我們的 SCT 深入指南,您可以進一步解碼此值。

$ 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