Certificate Transparency(証明書透過性) - 暗号化全般

暗号化全般 | IT用語集

Certificate Transparencyとは

Certificate Transparency(CT / 証明書透過性)は、Googleが2013年に提唱したSSL/TLS証明書の監視フレームワークです。すべての証明書発行を公開ログに記録することで、不正に発行された証明書を迅速に検出できるようにします。

CTの主な目的:

  • 不正証明書の早期発見:正当な権限なく発行された証明書を検出
  • 認証局の透明性確保:CAの発行行為を監視可能に
  • フィッシング対策:偽サイト用証明書の発行を抑止
  • インシデント対応の迅速化:問題発覚から対応までの時間短縮

CTの仕組み

主要コンポーネント

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│  認証局(CA)  │ → │  CTログ     │ ← │  モニター   │
└─────────────┘    └─────────────┘    └─────────────┘
      │                  │                   │
      │ 証明書発行       │ SCT発行           │ 監視・通知
      ↓                  ↓                   ↓
┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│  Webサーバー │ → │  ブラウザ   │ ← │  ドメイン   │
│  (SCT提供)  │    │ (SCT検証)  │    │  オーナー   │
└─────────────┘    └─────────────┘    └─────────────┘
  1. CTログ:証明書を追記専用のログに記録。Merkle Treeで整合性を保証
  2. SCT(Signed Certificate Timestamp):ログへの登録を証明するタイムスタンプ
  3. モニター:ログを監視し、特定ドメインへの証明書発行を通知
  4. オーディター:ログの整合性を検証

AIエンジニアとしての実体験

企業のセキュリティ監視システムの構築で、CTログの監視を自動化しました。自社ドメインへの不正な証明書発行を検知するシステムを実装しています。

# CTログ監視スクリプトの例
import requests
import json

def check_ct_logs(domain: str):
    """crt.shを使用してCTログを検索"""
    url = f"https://crt.sh/?q={domain}&output=json"
    response = requests.get(url)
    
    if response.status_code == 200:
        certs = response.json()
        for cert in certs:
            print(f"発行日: {cert['entry_timestamp']}")
            print(f"発行者: {cert['issuer_name']}")
            print(f"有効期限: {cert['not_after']}")
            print("---")
        return certs
    return []

# Facebook Certificate Transparency Monitoring APIの使用
def monitor_with_fbctm(domain: str, access_token: str):
    """Facebook CT Monitoring APIを使用した監視設定"""
    url = "https://graph.facebook.com/v17.0/certificates"
    params = {
        "query": domain,
        "access_token": access_token
    }
    response = requests.get(url, params=params)
    return response.json()

自社サーバー運用への応用

CTログの監視サービス

  • crt.sh:無料のCTログ検索エンジン
  • Facebook Certificate Transparency:大規模な監視サービス
  • Censys:証明書とホストの検索エンジン
  • SSLMate Cert Spotter:自動監視サービス

Chrome/SafariでのCT要件

2018年4月以降、Chrome/Safariは新規発行証明書にSCTを要求しています。SCTのない証明書は「信頼されない」と表示されます。

# 証明書のSCT確認
openssl s_client -connect example.com:443 -ct 2>/dev/null | grep -A20 "SCT"

# OpenSSL 1.1.0以降
echo | openssl s_client -connect example.com:443 2>/dev/null | \
  openssl x509 -text -noout | grep -A10 "CT Precertificate"

Certificate Transparencyのメリット・デメリット

メリット

  • 不正・誤発行された証明書をドメイン所有者自身が早期に発見できる(監視サービスによる自動アラートが可能)
  • 認証局(CA)の発行行為が公開ログとして残るため、CAの不正やミスに対する社会的な抑止力になる
  • 過去に複数のCAで発生した誤発行インシデントの検出・対応時間を大幅に短縮した実績がある
  • 証明書の透明性がブラウザベンダーの信頼判断基準となり、エコシステム全体のセキュリティ向上に寄与している

デメリット

  • 内部ドメイン名やステージング環境のホスト名がCTログを通じて意図せず公開されてしまう(情報漏洩・偵察リスク)
  • CTログの監視には別途ツールや運用体制が必要で、導入しなければ不正発行を検知できない
  • ログサーバー自体の可用性・整合性に依存するため、大規模ログの信頼性維持にはコストがかかる
  • 攻撃者もCTログを悪用して、標的組織が新しく取得したサブドメインを偵察に利用できる

類似技術との違い:CT vs CAA vs 証明書ピニング

不正な証明書発行やなりすましを防ぐ仕組みには、CT以外にもCAAレコードや証明書ピニングがあります。それぞれ役割が異なります。

仕組み 役割 2026年時点の位置づけ
Certificate Transparency 発行された証明書を事後的に公開ログで検出・監視する 主要ブラウザで必須。現在の標準的な不正発行対策
CAA(DNS証明書発行権限)レコード DNSレコードで、そのドメインに証明書を発行してよいCAを事前に指定する CAは発行前にCAAを確認する義務がある(発行の予防策)
証明書ピニング(HPKP) 特定の証明書・公開鍵のみを信頼するようクライアントに固定する HPKPは運用リスクの高さから非推奨・廃止済み。モバイルアプリ内蔵のピニングのみ限定的に利用

CAAは「発行前」の予防、CTは「発行後」の検出という補完関係にあり、両方を組み合わせることで不正発行対策の実効性が高まります。

実務での活用シーン・導入時の注意点

主な活用シーン

  • 自社ドメインに対する不正・誤発行証明書の監視体制構築
  • セキュリティインシデント対応におけるフィッシングサイト用証明書の早期発見
  • M&Aや組織再編時のドメイン資産棚卸し(CTログから過去の証明書履歴を追跡)
  • ブランド保護のための類似ドメイン・サブドメイン監視

導入時の注意点

  • 内部ドメインの命名規則:公開CAで証明書を発行する内部ホスト名は、機密性の高い情報を含む名称にしない
  • 監視の自動化:crt.shやCert SpotterなどをCI/CDやSlack通知と連携し、新規証明書発行を即座に検知できる体制を作る
  • CAAレコードとの併用:DNSにCAAレコードを設定し、許可していないCAからの発行自体を予防する
  • アラート後の対応フロー整備:不審な証明書を検知した際の連絡先・失効依頼手順を事前に文書化しておく

関連ブログ記事

最新動向(2026年)

CT 2.0の展開

より効率的なログ構造と検証メカニズムを持つCT 2.0の標準化が進んでいます。スケーラビリティと検証速度が向上しています。

ログの信頼性向上

Googleは信頼されるCTログのリストを定期的に更新しており、不正確なログは除外されます。Chrome CTポリシーでは、複数の独立したログからのSCTが要求されています。

ワイルドカード証明書の監視

ワイルドカード証明書もCTログに記録されるため、サブドメインの不正利用も検出可能になっています。

トラブル事例と対策

⚠️ 内部ドメインの証明書がCTログに記録される

問題:内部ホスト名がCTログで公開され、情報漏洩のリスク

対策:内部用には自己署名証明書またはプライベートCAを使用。公開CAの証明書は公開ドメインのみに使用

⚠️ 不正証明書の発見が遅れる

問題:手動でのログ確認では検出が遅延

対策:自動監視ツール(Cert Spotter、Facebook CTなど)を設定し、即座にアラートを受信

権威あるリソース

関連用語

よくある質問(FAQ)

Q. Certificate Transparency(CT)とは何ですか?

Certificate Transparency(証明書透明性)はGoogleが開発したTLS証明書の公開ログシステムです。CAが発行した全証明書が公開ログに記録され、誰でも確認できます。不正に発行された証明書を検出するための監視システムで、Chrome・SafariはCTログへの記録を必須要件としています(2018年以降)。

Q. CTログはなぜ重要ですか?

CTログにより、フィッシングや誤発行された証明書を迅速に検出できます。例えば自社ドメインの証明書が無断で発行された場合、CTログを監視するサービス(crt.sh、Cert Spotter等)で即座に検知できます。Google・DigiCertなどが公開CTログを運用しており、証明書発行時にCAがSCT(Signed Certificate Timestamp)を証明書に埋め込みます。

Q. crt.shで証明書情報を確認する方法は?

https://crt.sh/ にアクセスし、ドメイン名を入力するか、https://crt.sh/?q=example.comをブラウザで開くと、そのドメインの全CT登録証明書が確認できます。また、curl -s 'https://crt.sh/?q=example.com&output=json' でJSON形式のAPIレスポンスも取得できます。定期的な監視には無料のCert Spotterサービスも利用できます。

この用語についてもっと詳しく

Certificate Transparencyに関するご質問や証明書監視のご相談など、お気軽にお問い合わせください。