1

良い一日!

私のasp.net Webアプリケーションでは、ファイルの着信デジタル署名をチェックする必要があります. 私はそれを呼び出すことによってそれを行います:

SignedCms.CheckSignature(false) または SignerInfo.CheckSignature(false) (C#)。

そして、そのような呼び出し中の署名者の証明書が正しく失効していることを確認し、システム設定が正しいことを確認し、このプロセスを自分でクリアしたいと考えています。

入ってくる署名者の証明書は、大量の CA のものである可能性があります。したがって、署名者の証明書には、CA の OCSP サービスまたは CA の CRL サービスへの参照が含まれる場合と含まれない場合があります。

システムがそのような方法で失効をチェックするようにしたい:

IF 証明書が CA の OCSP Web サービスへの参照を持っている場合、システムは CA に要求を行います。ELSE IF 証明書が CA のオンライン CRL サービスへの参照を持っている場合、システムは CRL をダウンロードして使用します。ELSE システムはローカル CRL を使用します。

私の質問に答えてください:

  1. 必要な動作を説明するシステム設定をどのように (どこで) 見つけることができますか? (この動作は変更可能ですか、それとも修正されますか?)
  2. 証明書に CA の CRL Web サービスへの参照が含まれている場合、定期的にスクリプトを使用して CA の CRL をダウンロードしてインストールする必要がありますか?それとも、チェックのために CRL が必要な場合に、システムのダウンロードに依存してそれらを自動的に使用できますか?

ありがとうございました。

4

2 に答える 2

1

この手順は RFC 5280 で説明されており、非常に複雑です。簡単に言うと、次のことを行います。

  1. 問題の証明書については、その署名、有効期間、およびキーの使用法を確認してください
  2. CRL に対して証明書を確認します。
  3. OCSP に対して証明書を確認する
  4. CRL および/または OCSP チェック中に検出された証明書ごとに、手順 1 ~ 3 を実行します (これには、複数の CRL および OCSP チェックが含まれる場合があります)。

ここでは、非常に複雑なポリシー チェックについては触れません。

SecureBlackbox ライブラリに証明書バリデーターを実装するのに約 1 か月かかりました (ただし、CRL および OCSP クライアントからそれらの CRL の管理まで、すべてを自社で行っています)。OS の手段を使用して証明書のチェックを実行する場合は、そのジョブを実行する既存の関数を探す必要があります。

于 2011-07-28T15:17:56.247 に答える
0

CRL の内部情報、より具体的には CRL キャッシングcrl-caching-in-windows-and-little-bit の取得に関する有用な情報を見つけることができます。

私がここで考えている 2 つのアプローチがあります。Windows の cryptoAPI は、キャッシュを含め、自動的に失効を処理します。ただし、ここでの問題は、キャッシュ内の現在の CRL が期限切れになった場合にのみ、cryptoAPI が CA サーバーを検索することです。そのため、CRL の鮮度を維持することの難しさがあります。ただし、CA の CRL 発行頻度が毎日の場合は、一部のアプリケーションに適した構成で Windows からCertVerifyRevocationという関数呼び出しを使用するこのアプローチを回避できます。

2 番目の方法は、CA サーバーから CRL をダウンロードしてインストールし、検証にCertFindCertificateInCRLを使用することです。CRL ダウンローダー アプリケーションは、定義済みの時間間隔で CRL を更新するように構成できます。これは、CA がベース CRL のみを公開している場合に機能します。CRL を毎回ダウンロードすると、失効した証明書のリスト全体が取得されるためです。CA が Delta CRL と Base CRL を発行する頻度を減らしたらどうなるか、私にはわかりません。

于 2011-07-28T23:37:47.530 に答える