証明書チェーン - 暗号化全般

暗号化全般 | IT用語集

証明書チェーンとは

証明書チェーン(Certificate Chain)は、SSL/TLS証明書の信頼性を確立するための階層構造です。エンドエンティティ証明書(サーバー証明書)から始まり、中間証明書を経由して、最終的にブラウザやOSに組み込まれたルート証明書に到達します。

証明書チェーンの構造:

┌─────────────────────────────────┐
│     ルート証明書(Root CA)      │  ← ブラウザ/OSに内蔵
│     自己署名、信頼のアンカー      │
└─────────────────────────────────┘
              ↓ 署名
┌─────────────────────────────────┐
│   中間証明書(Intermediate CA)   │  ← サーバーから提供
│     ルートCAが署名              │
└─────────────────────────────────┘
              ↓ 署名
┌─────────────────────────────────┐
│  エンドエンティティ証明書        │  ← サーバーから提供
│  (サーバー証明書 / リーフ証明書)│
└─────────────────────────────────┘

証明書チェーンの検証プロセス

ブラウザが証明書を検証する際の流れ:

  1. サーバーから証明書チェーンを受信
  2. サーバー証明書の署名を中間証明書の公開鍵で検証
  3. 中間証明書の署名をルート証明書の公開鍵で検証
  4. ルート証明書が信頼済みストアに存在するか確認
  5. 各証明書の有効期限、失効状態をチェック

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

MLOpsプラットフォームの構築中、内部マイクロサービス間のmTLS(相互TLS認証)を設定する際に、証明書チェーンの理解が不可欠でした。

# 証明書チェーンの確認
openssl s_client -connect api.example.com:443 -showcerts

# チェーンの詳細表示
openssl crl2pkcs7 -nocrl -certfile fullchain.pem | \
openssl pkcs7 -print_certs -noout

# 証明書チェーンの検証
openssl verify -CAfile ca-bundle.crt -untrusted intermediate.crt server.crt

正しい順序での結合

# Nginxで使用するfullchain.pemの作成
# 順序:サーバー証明書 → 中間証明書(ルートは含めない)
cat server.crt intermediate.crt > fullchain.pem

# 確認
openssl crl2pkcs7 -nocrl -certfile fullchain.pem | \
openssl pkcs7 -print_certs -text -noout | grep "Subject:"

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

Nginx設定

server {
    listen 443 ssl;
    server_name example.com;
    
    # フルチェーン(サーバー証明書 + 中間証明書)
    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    
    # 秘密鍵
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
}

Apache設定

<VirtualHost *:443>
    SSLEngine on
    
    # サーバー証明書
    SSLCertificateFile /etc/ssl/certs/server.crt
    
    # 秘密鍵
    SSLCertificateKeyFile /etc/ssl/private/server.key
    
    # 中間証明書チェーン
    SSLCertificateChainFile /etc/ssl/certs/intermediate.crt
</VirtualHost>

関連ブログ記事

最新動向(2026年)

証明書の短命化

Let's Encryptに代表される自動更新の普及により、証明書の有効期間は短縮傾向にあります。現在は90日が一般的ですが、将来的にはさらに短くなる可能性があります。

クロス署名の活用

新しいルートCAの普及には時間がかかるため、既存のルートCAからクロス署名を受けることで、古いクライアントとの互換性を維持します。Let's EncryptのISRG Root X1への移行は好例です。

トラブル事例と対策

⚠️ 「証明書が信頼されない」エラー

原因:中間証明書がサーバーから提供されていない

対策fullchain.pemを正しく設定。What's My Chain Cert?で確認

⚠️ モバイルで接続できない

原因:古いAndroidデバイスにルート証明書がない

対策:クロス署名された証明書チェーンを使用

⚠️ 証明書の順序が間違っている

原因:チェーンの順序が逆、またはルート証明書を含めてしまっている

対策:正しい順序(エンドエンティティ→中間)で結合。ルートは含めない

権威あるリソース

関連用語

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

証明書チェーンに関するご質問やSSL設定のご相談など、お気軽にお問い合わせください。