証明書透明性 (CT) ログ

デンマーク語で見る

ドイツ語で見る

スペイン語で見る

フランス語で見る

ヘブライ語で見る

ハンガリー語で見る

日本語で表示する

韓国語で見る

ロシア語で見る

ウクライナ語で見る

簡体字中国語ページを読む

繁体字中国語でこのページを読む。

最終更新日: | すべてのドキュメントを見る

証明書透明性 (CT) は、TLS証明書の発行をログ記録および監視するためのシステムです。CTは、証明書の発行を監視および調査する能力を大幅に向上させ、これらの機能により、CAエコシステムとWebセキュリティに多くの改善がもたらされました。その結果、CTは急速に重要なインフラストラクチャになりつつあります。

Let's Encryptは、発行するすべての証明書をCTログに送信します。「Oak」とSaplingという名前の、毎年シャード化される2つのCTログも運用しています。すべての公開的に信頼されている認証局は、当社のログに送信することを歓迎します。多くの認証局ルート証明書がすでに当社の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