TLS・PKI・証明書

OCSP(Online Certificate Status Protocol) おーしーえすぴー

証明書失効確認PKICRLTLSデジタル証明書OCSP Stapling
OCSPについて教えて

簡単に言うとこんな感じ!

HTTPSで使うデジタル証明書が「今この瞬間も有効か?」をリアルタイムで問い合わせる仕組みだよ。免許証の有効期限を確認するんじゃなくて、「この人、今も資格停止されてないですか?」って警察に直接電話で確認するイメージ!


OCSPとは

OCSP(Online Certificate Status Protocol) とは、デジタル証明書の有効・失効状態をリアルタイムで確認するためのプロトコルです。ウェブサイトへのHTTPS接続時などに、ブラウザや通信ソフトウェアが証明書を発行した 認証局CA: Certificate Authority) のOCSPサーバーに問い合わせを送り、その証明書が今現在も有効かどうかを確認します。

従来は CRL(Certificate Revocation List:証明書失効リスト) という「失効した証明書の一覧ファイル」をダウンロードして照合する方法が使われていました。しかしCRLはファイルサイズが大きく、更新も定期的にしか行われないため、リアルタイム性に課題がありました。OCSPはその弱点を補う形で登場し、個々の証明書について「有効(good)」「失効(revoked)」「不明(unknown)」の3種類でシンプルに回答を返す仕組みを実現しています。

特にフィッシング詐欺や不正アクセスで使われたサイトの証明書が緊急失効させられた場合、OCSPがあることでエンドユーザーへの被害を素早く防ぐことができます。システム発注や選定の場面では、利用するTLS証明書や認証基盤がOCSPに対応しているかどうかが、セキュリティ要件の確認ポイントになります。


OCSPの仕組みと応答の種類

OCSPの基本的なやりとりは「リクエスト→レスポンス」のシンプルなHTTP通信です。ブラウザ(クライアント)がOCSPレスポンダーと呼ばれるサーバーに問い合わせを送り、署名付きの応答を受け取ります。

応答ステータス意味具体的な状況
good有効証明書は現在も正常に使用可能
revoked失効証明書は失効済み(不正利用・鍵漏洩など)
unknown不明問い合わせ先のCAが発行した証明書ではない
[ブラウザ]                    [OCSPレスポンダー]
    |                                |
    |── OCSPリクエスト ──────────────>|
    |   (証明書のシリアル番号を送信)   |
    |                                |
    |<── OCSPレスポンス ─────────────|
    |   (good / revoked / unknown)   |
    |   ※CA秘密鍵で署名済み          |

覚え方:「証明書の健康診断を毎回オンラインで受ける」

OCSPの「O」はOnlineの「O」。証明書が有効期限内であっても、途中で失効していないかをオンラインで毎回確認するのがポイントです。「免許が期限内でも、違反で停止中かどうか確認する」と覚えましょう。

OCSP Stapling:パフォーマンス改善の仕組み

通常のOCSPでは、接続ごとにブラウザがOCSPサーバーへ問い合わせを行うため、以下の問題が生じます。

  • 通信の遅延(ラウンドトリップが増える)
  • OCSPサーバーへの負荷集中
  • プライバシーの懸念(どのサイトに接続したかがCAに伝わる)

これを解決するのが OCSP Stapling(OCSPステープリング) です。Webサーバー自身があらかじめOCSPレスポンスを取得・キャッシュしておき、TLSハンドシェイク時にブラウザへ「添付(staple)」して渡します。

比較項目通常のOCSPOCSP Stapling
問い合わせ主体ブラウザWebサーバー
通信の流れブラウザ→CAのOCSPサーバーサーバー→CAのOCSPサーバー(事前取得)
レイテンシ増加する増加しない
プライバシーCAにアクセス先が伝わるCAに伝わらない
対応要否標準機能サーバー側の設定が必要

歴史と背景

  • 1990年代後半 — インターネットの商用利用拡大にともない、デジタル証明書の失効管理が課題に。CRL(失効リスト)が使われ始めるが、大規模化・リアルタイム性の問題が浮上
  • 1999年 — RFC 2560としてOCSPの初版が標準化される。HTTPベースのシンプルな設計が採用された
  • 2004年 — OCSP機能強化のためRFC 2560を補完するRFC 3029(DVCS)などが整備される
  • 2013年 — RFC 6960としてOCSPが改定・更新。より厳密な仕様とセキュリティ要件が追加された
  • 2013年〜 — OCSP Staplingが主要WebサーバーやTLSライブラリで広くサポートされ始める(Apache・Nginx・IIS等)
  • 2019年〜 — Chrome・Firefoxなどブラウザ側でOCSPのソフトフェイル(失敗時に接続を続行)の挙動や廃止議論が続く。CRLSetsなど独自の代替手段を組み合わせる動きも
  • 現在TLS 1.3環境ではOCSP Staplingが推奨され、証明書の失効確認の主役の座を維持している

OCSPとCRLの比較・PKIにおける位置づけ

OCSPとCRLは、どちらも証明書の失効確認を担う仕組みですが、アーキテクチャが異なります。PKI全体における位置づけを図解します。

認証局(CA) 証明書の発行・失効管理 CRL配布 委任 CRL配布ポイント 失効リストをファイル配信 OCSPレスポンダー リアルタイム応答サーバー ブラウザ/クライアント 証明書の有効性を確認 CRLダウンロード OCSP問い合わせ CRL方式 OCSP方式 認証局(CA) クライアント
比較項目CRLOCSP
方式失効リストをダウンロードして照合個別証明書をリアルタイム照会
リアルタイム性低い(更新間隔がある)高い(即時応答)
通信量リスト全体をダウンロード個別の証明書のみ
サーバー負荷配布サーバー(CDN等)OCSPレスポンダー
プライバシー低懸念やや懸念あり(OCSP Staplingで解消)
対応コスト低いサーバー設定が必要

関連する規格・RFC

規格・RFC番号内容
RFC 6960OCSPの現行標準仕様(2013年改定)。リクエスト・レスポンスの形式や署名方式を定義
RFC 2560OCSPの初版(1999年)。現在はRFC 6960に置き換えられている
RFC 6961TLS拡張によるOCSP Stapling(複数証明書対応)の仕様
RFC 4366TLS拡張としてのOCSP Stapling(単一証明書)の元仕様
RFC 5280X.509証明書とCRL全体のPKI標準仕様。OCSPと密接に関連

関連用語

  • TLS(Transport Layer Security) — HTTPS通信を支える暗号化プロトコル。OCSPはTLSハンドシェイク中に使われる
  • デジタル証明書 — 公開鍵と所有者情報を紐付けるデータ。OCSPで有効性を確認する対象
  • 認証局(CA) — 証明書を発行・管理する機関。OCSPレスポンダーを運用する
  • CRL(証明書失効リスト) — 失効した証明書の一覧。OCSPと並ぶ失効確認の仕組み
  • PKI(公開鍵基盤) — 証明書・CA・失効確認を含む全体的な信頼インフラ
  • HTTPS — TLSを使ったセキュアなWeb通信。OCSPはHTTPS接続時の安全性を支える
  • X.509 — デジタル証明書の国際標準フォーマット。OCSPで扱う証明書の形式