X.509 証明書に依存するほとんどのアプリケーションでは、認証、署名、暗号化操作を実行するときに、使用する証明書の状態を検証する必要があります。この証明書の有効性と失効の確認は、証明書チェーン内のルート証明書に至るすべての証明書に対して実行されます。ルート証明書またはチェーン内のいずれかの証明書が無効な場合、チェーン内で無効な証明書の下位にある証明書も無効になります。
検証では次の点が確認されます。
-
各証明書の署名が有効であること
-
現在の日付と時刻が各証明書の有効期間内であること
-
証明書が破損しておらず、形式が正しいこと
また、証明書チェーン内の各証明書に対して、失効状態が確認されます。失効確認は、証明書失効リスト (CRL) またはオンライン証明書状態プロトコル (OCSP) 応答を使用して実行できます。
OCSP とは
Microsoft のオンライン レスポンダーは、OCSP プロトコルを実装しています。このプロトコルにより、証明書の受信側が、ハイパーテキスト転送プロトコル (HTTP) を使用して、証明書状態要求を OCSP レスポンダーに送信することができます。OCSP レスポンダーは、証明書の状態を示す、最終的なデジタル署名付きの応答を返します。CA 内で失効した証明書の総数にかかわらず、1 回の要求で取得されるデータの量は一定です。
詳細については、RFC 2560『X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP』に関するページ (
オンライン レスポンダー
Microsoft の OCSP の実装であるオンライン レスポンダーは、クライアント コンポーネントとサーバー コンポーネントに分けられます。クライアント コンポーネントは CryptoAPI 2.0 ライブラリに組み込まれており、サーバー コンポーネントは Active Directory 証明書サービス (AD CS) サーバー役割によって提供される新しいサービスとして導入されています。クライアント コンポーネントとサーバー コンポーネントがやり取りする方法を次に説明します。
-
OCSP レスポンダーの位置を指定した証明書をアプリケーションが検証する際、クライアント コンポーネントはまずローカル メモリとディスク キャッシュを検索して、最新の失効データが格納されている OCSP 応答がキャッシュされていないかどうかを確認します。
-
条件に一致する応答がキャッシュされていない場合は、HTTP プロトコル経由でオンライン レスポンダーに要求が送信されます。
-
オンライン レスポンダー Web プロキシがこの要求をデコードおよび検証します。要求が有効な場合、要求を満たすために必要な失効情報がないかどうか、Web プロキシのキャッシュが調べられます。最新の情報がキャッシュにない場合は、オンライン レスポンダー サービスに要求が転送されます。
-
オンライン レスポンダー サービスは要求を受け取り、ローカル CRL がある場合はこの CRL を確認し、CA によって発行された最新の CRL のコピーがキャッシュされていないかどうかを確認します。
-
ローカル失効リストまたはキャッシュされた失効リストに証明書が載っていない場合、失効プロバイダーは、失効構成に指定されている場所から更新済みの CA CRL があれば取得し、証明書の状態を確認します。次に、プロバイダーは証明書の状態をオンライン レスポンダー サービスに返します。
-
Web プロキシは応答をエンコードしてクライアントに返信し、証明書が有効であることを通知します。また、同じ証明書に関する以降の状態要求に備えて、応答のコピーを一定期間だけキャッシュしておきます。