証明書の透明性(CT)は、公開で発行されたすべてのSSL証明書を公開の追記専用ログに記録するシステムです。これにより、誰でもどのドメインに対してどの証明書が発行されたかを確認でき、不正または詐欺的な証明書を検出できます。
CTは、認証局が発行すべきでないドメインの証明書を発行した事件(特に2011年のDigiNotar侵害事件で、不正なGoogleの証明書が作成された)を受けて、Googleが2013年に作成しました。2018年以降、すべての公的に信頼される認証局はすべての証明書をCTログに提出することが義務付けられています。
CTが重要な理由
CTなし(2018年以前)
認証局はgoogle.comの証明書を、所有者でない人に発行できました。証明書が攻撃に積極的に使用されるまで誰も知りませんでした。認証局は信頼だけで運営されていました。
CTあり
すべての証明書が公開で記録されます。認証局がgoogle.comの証明書を発行すると、数時間以内にCTログに表示されます。Google(または監視している誰でも)がすぐに検出できます。
ドメインのCTログを確認する方法
crt.sh — 最も人気のあるCT検索ツール
crt.shにアクセスしてドメインを入力します。そのドメインに対して発行されたすべての証明書が表示されます:
- Issuer — どの認証局が発行したか
- Not Before / Not After — 有効期間
- SAN — 証明書がカバーするドメイン名
example.comの結果例:
2026-05-08 Let's Encrypt R10 example.com, www.example.com
2026-02-15 Let's Encrypt R10 example.com
2025-11-20 Let's Encrypt R3 example.com, www.example.com
...
コマンドラインでの検索
curl -s "https://crt.sh/?q=yourdomain.com&output=json" | jq '.[] | {issuer_name, not_before, not_after, common_name}'
確認すべき項目
- リクエストしていない証明書 — 誰かがドメインを偽装している可能性
- 予期しない認証局 — Let’s Encryptしか使っていないのにDigiCertの証明書が見つかった場合、調査が必要
- 作成していないワイルドカード証明書 — 不明なソースからの
*.yourdomain.com - 認識していないサブドメイン — リクエストしていない証明書内の
secret.yourdomain.com
CTの技術的な仕組み
- 認証局が証明書を発行し、1つ以上のCTログに提出します
- CTログがSCTを返します(Signed Certificate Timestamp)— 証明書が記録されたことの証明
- SCTが証明書に埋め込まれます(またはTLSハンドシェイク中に配信)
- ブラウザがSCTを検証します — Chromeは少なくとも2〜3のCTログからの有効なSCTを要求します
- 誰でもログを監視できます — 自分のドメインに発行された証明書を確認
CTログは追記専用です。証明書は追加できますが、削除や変更はできません。これにより監査可能な履歴が作成されます。
CT監視の設定
自動監視のために、ドメインに新しい証明書が発行されたときにアラートを送信するサービスを使用してください:
| ツール | 方法 | コスト |
|---|---|---|
| crt.sh(手動) | 定期的に検索 | 無料 |
| Cert Spotter(SSLMate) | 新しい証明書のメールアラート | 無料枠あり |
| Facebook CT Monitor | Facebookのツール経由のアラート | 無料 |
| Google Certificate Transparency | GoogleのCTログを検索 | 無料 |
CTとGetHTTPS
GetHTTPSから証明書を取得すると、Let’s Encryptが自動的に複数のCTログに提出します。発行後にcrt.shでドメインを検索すると、数分以内に証明書が表示されることで確認できます。
これは設計通りです。すべての証明書の公開ログはセキュリティ機能であり、プライバシーの懸念ではありません。証明書自体(ドメイン名、公開鍵、認証局)は、TLSハンドシェイク中にすべての訪問者に送信されています。
よくある質問
証明書の透明性をオプトアウトできますか?
公的に信頼される証明書の場合、できません。2018年以降、すべての認証局は証明書をCTログに提出する必要があります。ブラウザ(Chrome、Safari)は有効なSCTがない証明書を拒否します。プライベート/内部認証局は免除されます。公開CTログには提出しません。
CTはサーバーのIPアドレスを公開しますか?
いいえ。CTログには証明書(ドメイン名、公開鍵、認証局、有効期間)が含まれますが、サーバーのIPアドレスは含まれません。DNSレコードがIPを公開します。CTログは新しい情報を追加しません。
リクエストしていないドメインの証明書が見つかった場合はどうすればいいですか?
- 発行者を確認 — ホスティングプロバイダーのAutoSSLの可能性はありますか?
- SANを確認 — 認識できるドメインが含まれていますか?
- 本当に不正な場合、発行認証局に連絡して失効を要求してください
- DNSに不正な変更がないか確認 — 誰かがドメインを自分のサーバーに向けた可能性があります
CTログはいくつありますか?
数十あります。主要な運営者にはGoogle(Argon、Xenon)、Cloudflare(Nimbus)、DigiCert、Sectigo、Let’s Encryptなどがあります。ブラウザは、単一の侵害されたログが不正な証明書を隠すことを防ぐため、複数の独立したログからのSCTを要求します。