2.

証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説

編集
この記事の要点
  • デジタル証明書は「この公開鍵は確かにこのドメインのものだ」と第三者が保証する電子的な身分証である
  • 証明書の標準フォーマットは X.509 で、ルート CA → 中間 CA → サーバー証明書の階層を成す
  • 信頼チェーンを辿ってルート CA に到達できれば証明書は信頼される
  • 検証レベルには DV(ドメイン認証)・OV(組織認証)・EV(拡張認証)がある
  • 失効した証明書は CRL や OCSP で確認でき、Let's Encrypt は無料・自動で DV 証明書を発行する

概要

デジタル証明書(サーバー証明書)は、TLS のハンドシェイクでサーバーが提示する電子的な身分証明書です。「この公開鍵は、確かに example.com というドメインの持ち主のものである」という事実を、第三者である認証局(CA / Certificate Authority)が電子署名によって保証します。これがあるおかげで、利用者は接続先が偽サイトでないことを確認できます。証明書がなければ、暗号化はできても「誰と暗号通信しているのか」が分からず、中間者攻撃を防げません。

証明書の標準フォーマットは X.509 です。中にはドメイン名(サブジェクト)、公開鍵、有効期間、発行 CA、そして CA のデジタル署名が含まれます。この署名こそが「CA がこの内容を保証した」という印鑑にあたります。

仕組み

証明書の信頼は階層構造で成り立ちます。頂点にあるのがルート CAで、その証明書(ルート証明書)は OS やブラウザにあらかじめ組み込まれています。ルート CA は秘密鍵を厳重に保管するため、日常の発行業務には直接使わず、代わりに中間 CAに署名を委譲します。実際のサーバー証明書はこの中間 CA が発行します。

ブラウザは証明書を受け取ると、信頼チェーン(Chain of Trust)を辿ります。サーバー証明書 → それを署名した中間 CA → さらにそれを署名したルート CA、という順に署名を検証し、最終的に「自分が信頼するルート CA」に到達できれば、その証明書を信頼します。途中の中間証明書がサーバーから送られてこないと、チェーンが切れて検証に失敗します(よくある設定ミス)。

検証の厳格さによって 3 段階の種類があります。DV(Domain Validation)はドメインの管理権だけを確認する最も簡易なもので、自動発行が可能です。OV(Organization Validation)は組織の実在性も確認します。EV(Extended Validation)は最も厳格な審査を行いますが、ブラウザのアドレスバーでの特別表示は廃止され、近年は存在感が薄れています。なお、暗号強度は DV/OV/EV で差はありません。違うのは「身元確認の厳しさ」だけです。

失効の仕組みも重要です。秘密鍵漏洩などで証明書を無効化したい場合、CRL(Certificate Revocation List)という失効リストや、リアルタイムに問い合わせる OCSP(Online Certificate Status Protocol)で確認します。OCSP の応答をサーバーが事前に取得して同梱する OCSP Stapling が高速化と privacy の観点で推奨されます。

設定・実用例

OpenSSL で証明書の中身を確認したり、自己署名証明書を作ったりできます。

# 証明書の内容(発行者・有効期限・SAN)を表示
openssl x509 -in cert.pem -noout -text

# サーバーが返すチェーンを確認
openssl s_client -connect example.com:443 -showcerts

# 開発用の自己署名証明書を 1 コマンドで生成
openssl req -x509 -newkey rsa:2048 -nodes \
  -keyout key.pem -out cert.pem -days 365 \
  -subj "/CN=localhost"

Let's Encrypt なら certbot で無料・自動更新の DV 証明書を取得できます。

# Nginx 用に証明書を取得し自動更新を設定
certbot --nginx -d example.com -d www.example.com

# 更新シミュレーション(cron / systemd timer で自動実行される)
certbot renew --dry-run

主な用途

  • Web サーバーの HTTPS 化:もっとも一般的。常時SSL化の前提
  • クライアント証明書認証:ユーザー側にも証明書を配り、相互認証(mTLS)を行う
  • コード署名:配布ソフトウェアの発行元保証と改ざん検知
  • メール暗号化(S/MIME):送信者の身元保証と本文暗号化

比較テーブル

種類確認内容発行速度主な用途
DVドメイン管理権のみ数分〜自動個人サイト・ブログ・API
OVドメイン+組織実在数日企業サイト
EV厳格な組織審査1〜2 週間金融・大手 EC
自己署名なし(自分で署名)即時開発・内部用途

注意点

  • 中間証明書の配信漏れはチェーン切れの最頻出原因。フルチェーンを設定する
  • 自己署名証明書は本番で使わない。ブラウザが警告を出し、中間者攻撃の検知もできない
  • 有効期限は短期化が進む。手動更新は破綻するので自動化必須
  • ワイルドカード証明書(*.example.com)は便利だが、1 つの秘密鍵漏洩の影響範囲が広がる

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. TLS/SSLの仕組み
  2. 証明書と認証局(CA)
  3. ファイアウォール
  4. iptables/nftables
  5. VPN
  6. IPsec
  7. WireGuard
  8. ゼロトラストネットワーク

最近更新/作成されたページ