2. Protocol Overview (プロトコルの概要)
2. Protocol Overview (プロトコルの概要)
定期的な CRL との照合の代わりに、またはその補足として、証明書の失効ステータスに関するタイムリーな情報を取得する必要がある場合がある (参照: [RFC5280] セクション 3.3)。例として、高額な資金移動や大規模な株式取引などが挙げられる。
Online Certificate Status Protocol (オンライン証明書状態プロトコル, OCSP) により、アプリケーションは識別された証明書の (失効) 状態を判断できる。OCSP は、CRL で可能な場合よりもタイムリーな失効情報を提供するという運用要件の一部を満たすために使用される場合があり、追加のステータス情報を取得するためにも使用される場合がある。OCSP クライアントは、OCSP レスポンダにステータスリクエストを発行し、レスポンダが応答を提供するまで、問題の証明書の受け入れを保留する。
本プロトコルは、1 つ以上の証明書のステータスを確認するアプリケーションと、対応するステータスを提供するサーバーとの間で交換する必要があるデータを指定する。
2.1. Request (リクエスト)
OCSP リクエストには以下のデータが含まれる:
-
プロトコルバージョン
-
サービスリクエスト
-
ターゲット証明書識別子
-
オプションの拡張 (OCSP レスポンダによって処理されてもよい (MAY))
リクエストを受信すると、OCSP レスポンダは以下を判断する:
-
メッセージが適切に形成されているか、
-
レスポンダがリクエストされたサービスを提供するように構成されているか、および
-
リクエストにレスポンダが必要とする情報が含まれているか。
これらの条件のいずれかが満たされない場合、OCSP レスポンダはエラーメッセージを生成する。それ以外の場合は、確定的な応答を返す。
2.2. Response (応答)
OCSP 応答にはさまざまなタイプがある。OCSP 応答は、応答タイプと実際の応答のバイトで構成される。すべての OCSP サーバーとクライアントがサポートしなければならない (MUST) 基本的な OCSP 応答タイプが 1 つある。本セクションの残りの部分は、この基本的な応答タイプにのみ関係する。
すべての確定的な応答メッセージはデジタル署名されなければならない (SHALL)。応答の署名に使用される鍵は、以下のいずれかに属さなければならない (MUST):
-
問題の証明書を発行した CA
-
公開鍵がリクエスタによって信頼されている Trusted Responder (信頼できるレスポンダ)
-
CA によって直接発行された特別にマークされた証明書を保持し、そのレスポンダがその CA の OCSP 応答を発行できることを示す CA Designated Responder (CA 指定レスポンダ/Authorized Responder (認可されたレスポンダ)、セクション 4.2.2.2 で定義)
確定的な応答メッセージは以下で構成される:
-
応答構文のバージョン
-
レスポンダの識別子
-
応答が生成された時刻
-
リクエスト内の各証明書の応答
-
オプションの拡張
-
署名アルゴリズム OID
-
応答のハッシュ全体で計算された署名
リクエスト内の各証明書の応答は以下で構成される:
-
ターゲット証明書識別子
-
証明書ステータス値
-
応答の有効期間
-
オプションの拡張
本仕様は、証明書ステータス値で使用するための以下の確定的な応答インジケータを定義する:
-
good (良好/有効)
-
revoked (失効)
-
unknown (不明)
"good" 状態は、ステータスの問い合わせに対する肯定的な応答を示す。少なくとも、この肯定的な応答は、リクエストされた証明書シリアル番号を持つ証明書で、現在有効期間内にあるものが失効していないことを示す。この状態は必ずしも、証明書が発行されたことがあることや、応答が生成された時刻が証明書の有効期間内であることを意味するものではない。応答拡張を使用して、発行、有効性などに関する肯定的な声明など、証明書のステータスに関するレスポンダによるアサーションに関する追加情報を伝えることができる。
"revoked" 状態は、証明書が一時的に (失効理由は certificateHold)、または恒久的に失効したことを示す。この状態は、関連する CA が、リクエスト内の証明書シリアル番号を持つ証明書を、現在または過去の発行鍵 (本書では "non-issued (非発行)" 証明書と呼ぶ) を使用して発行した記録を持っていない場合にも返される場合がある (MAY)。
"unknown" 状態は、レスポンダがリクエストされている証明書について知らないことを示す。通常、これはリクエストが、このレスポンダによってサービスされていない認識されない発行者を示しているためである。
注:"revoked" ステータスは、リクエストされたシリアル番号を持つ証明書が拒否されるべきであることを示し、"unknown" ステータスは、このレスポンダによってステータスを判断できなかったことを示し、それによってクライアントが別のステータス情報源 (CRL など) を試すかどうかを決定できるようにする。これにより、"revoked" 応答は、レスポンダの意図がクライアントに別のステータス情報源を試させるのではなく証明書を拒否させることである非発行証明書 (上記で定義) に適している。"revoked" ステータスは、RFC 2560 の展開との後方互換性を維持するために、非発行証明書に対しては依然としてオプションである。たとえば、レスポンダは、リクエストされたシリアル番号が発行された証明書に割り当てられているかどうかについての知識を持っていない可能性があり、またはレスポンダは RFC 5019 に従って事前に生成された応答を提供する可能性があり、そのため、すべての非発行証明書シリアル番号に対して署名付き応答を提供できない可能性がある。
レスポンダが非発行証明書のステータスリクエストに対して "revoked" 応答を送信する場合、レスポンダは応答に extended revoked definition (拡張失効定義) 応答拡張 (セクション 4.4.8) を含めなければならず (MUST)、OCSP レスポンダが非発行証明書もカバーするように "revoked" 状態の拡張定義をサポートしていることを示す。さらに、この非発行証明書に関連する SingleResponse は:
-
失効理由 certificateHold (6) を指定しなければならない (MUST)、
-
失効時刻 revocationTime として 1970 年 1 月 1 日を指定しなければならない (MUST)、そして
-
CRL references extension (CRL 参照拡張) (セクション 4.4.2) または CRL entry extensions (CRL エントリ拡張) (セクション 4.4.5) を含めてはならない (MUST NOT)。
2.3. Exception Cases (例外ケース)
エラーの場合、OCSP レスポンダはエラーメッセージを返す場合がある。これらのメッセージは署名されていない。エラーには以下のタイプがある:
-
malformedRequest (不正な形式のリクエスト)
-
internalError (内部エラー)
-
tryLater (後で再試行)
-
sigRequired (署名が必要)
-
unauthorized (未承認)
受信したリクエストが OCSP 構文に準拠していない場合、サーバーは "malformedRequest" 応答を生成する。
応答 "internalError" は、OCSP レスポンダが矛盾した内部状態に達したことを示す。クエリは、場合によっては別のレスポンダを使用して再試行されるべきである。
OCSP レスポンダが稼働しているが、リクエストされた証明書のステータスを返すことができない場合、"tryLater" 応答を使用して、サービスは存在するが一時的に応答できないことを示すことができる。
応答 "sigRequired" は、応答を構築するためにサーバーがクライアントにリクエストへの署名を要求する場合に返される。
応答 "unauthorized" は、クライアントがこのサーバーにこのクエリを行うことを許可されていない場合、またはサーバーが権限を持って応答できない場合に返される (参照: [RFC5019] セクション 2.2.3)。
2.4. Semantics of thisUpdate, nextUpdate, and producedAt (thisUpdate, nextUpdate, および producedAt のセマンティクス)
本書で定義されている応答には、thisUpdate、nextUpdate、producedAt、および revocationTime の 4 つの時刻を含めることができる。これらのフィールドのセマンティクスは以下のとおりである:
thisUpdate: 示されているステータスが正しいとレスポンダによって知られている最新の時刻。
nextUpdate: 証明書のステータスに関するより新しい情報が利用可能になる時刻、またはそれ以前の時刻。
producedAt: OCSP レスポンダがこの応答に署名した時刻。
revocationTime: 証明書が失効したか、保留された時刻。
2.5. Response Pre-Production (応答の事前生成)
OCSP レスポンダは、指定された時刻における証明書のステータスを指定する署名付き応答を事前に生成してもよい (MAY)。ステータスが正しいことがわかっていた時刻は、応答の thisUpdate フィールドに反映されなければならない (SHALL)。より新しい情報が利用可能になる時刻またはそれ以前の時刻は nextUpdate フィールドに反映され、応答が生成された時刻は応答の producedAt フィールドに表示される。
2.6. OCSP Signature Authority Delegation (OCSP 署名権限の委任)
証明書のステータス情報に署名する鍵は、証明書に署名した鍵と同じである必要はない。証明書の発行者は、OCSP 署名者の証明書に extended key usage extension (拡張鍵使用法拡張) ([RFC5280] セクション 4.2.1.12 で定義) の一意の値を含めることにより、OCSP 署名権限を明示的に委任する。この証明書は、認識している CA によってレスポンダに直接発行されなければならない (MUST)。詳細については、セクション 4.2.2.2 を参照のこと。
2.7. CA Key Compromise (CA 鍵の侵害)
OCSP レスポンダが特定の CA の秘密鍵が侵害されたことを知っている場合、その CA によって発行されたすべての証明書に対して "revoked" 状態を返してもよい (MAY)。