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"

関連ブログ記事

最新動向(2026年)

CT 2.0の展開

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

ログの信頼性向上

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

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

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

トラブル事例と対策

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

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

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

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

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

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

権威あるリソース

関連用語

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

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