Cloudflare は、Certificate Transparency Monitoring サービスの一般提供を発表しました。このサービスは、公開されている証明書透明性ログを監視し、顧客のドメインに関連付けられた新しい TLS 証明書を検出します。主な変更点は、Cloudflare が顧客に代わって発行する証明書について、今後は通知を送信しないことです。これにより、受信するメッセージは、予期しない証明書や Cloudflare が発行していない証明書に、より重点を置くようになります。
このサービスは 2019 年にパブリックベータとして開始され、現在は 650,000 を超える顧客ドメインで利用されています。Certificate Transparency ログの監視により、特定のドメイン内のホスト名に対して証明書が発行されたことを早期に把握できます。これは、誤って、または許可なく発行された証明書の検出に役立つ可能性があります。
更新によるノイズの削減
主な問題は、Cloudflare が顧客に代わって多数の証明書を発行していたことでした。これには、Universal SSL の更新、Advanced Certificate Manager の証明書、フォールバック証明書が含まれます。Google Chrome や Apple Safari などの主要なブラウザーが証明書を信頼するには、証明書を公開 CT ログに記録する必要があるため、これらの発行は外部証明書とともに監視対象に表示されていました。
また、証明書は有効期間が短く、自動的に更新されます。1 つの Universal SSL 証明書は約 60 日ごと、年間最大 6 回更新される可能性があります。CA/Browser Forum が証明書の最大有効期間を 2029 年までに 47 日へ短縮することを投票で決定したため、今後は更新頻度がさらに高まると予想されます。その結果、正当なアラートが定期的な更新通知に紛れてしまう可能性がありました。
フィルタリングに使用される識別子
Cloudflare は、DER でエンコードされた SubjectPublicKeyInfo 構造の SHA-256 ハッシュである spki_sha256 の値を使用しました。証明書ランキングサービスは、鍵の作成時、つまり発行プロセスが始まる前に、証明書署名要求からこの値を計算します。
アラートサービスは、CT ログエントリに含まれる公開鍵からこの値を再計算し、証明書ランキングサービスのデータベースで検索します。一致が見つかった場合、Cloudflare は証明書が自社システムから発行されたことを把握し、通知を抑制します。値が見つからない場合は、従来どおり通知が送信されます。
公開鍵が選ばれたのは、証明書署名要求、初期証明書、最終証明書の各段階で変わらないためです。また、Cloudflare は発行処理ごとに新しい鍵ペアを作成します。これにより、初期証明書と最終証明書のログが異なる時刻に到着した場合でも、公開鍵を証明書要求の実用的かつ一意の識別子として使用できます。
通知で何が変わるのか
- Universal SSL、Advanced Certificate Manager、Total TLS、フォールバック証明書など、Cloudflare が管理する証明書では、メール通知が生成されなくなります。
- 発行処理が完了しないまま記録されることがある放棄された初期証明書は、Cloudflare で既知の発行に関連付けられている限り、通知を送信しません。
- 顧客がアップロードしたカスタム証明書では、引き続き通知が生成されます。これらの鍵は Cloudflare によって作成されたものではなく、Cloudflare の発行サービスにも記録がないためです。
Cloudflare はメールメッセージも更新し、影響を受けるドメイン名を件名に表示するようにしました。また、証明書の詳細とダッシュボード内の証明書へのリンクも含めることで、ユーザーが確認して適切な対応を取れるようにしています。
提供状況と今後の予定
フィルタリングは既存ユーザーに対してすでに有効になっており、操作は必要ありません。まだサービスを利用していないユーザーは、Cloudflare ダッシュボードで SSL/TLS、Edge Certificates、Certificate Transparency Monitoring の順に進むことで有効化できます。このサービスは追加料金なしですべてのプランで利用でき、プランのレベルにかかわらず、通知受信者に関する設定は統一されています。
Cloudflare は今後、このサービスを Cloudflare Notifications に追加する予定です。これにより、現在のようにメールのみに依存するのではなく、CT 通知を webhooks、PagerDuty、または追加のメールアドレスへ転送できるようになります。