4

C#でX509Chainを使用して、証明書が取り消されていないことを検証しようとしています。

X509Chain chain = new X509Chain();
chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EndCertificateOnly;
chain.Build(certificate);

これにより、次のステータスが返されます。

失効関数は、証明書の失効を確認できませんでした

エラーをオフにするだけでなく、失効した証明書を確認したいのですが。

この問題を解決するにはどうすればよいですか、または少なくとも原因をよりよく理解するにはどうすればよいですか(たとえば、CRLをチェックしている場所を見つけるにはどうすればよいですか?)

4

1 に答える 1

7

失効チェックには、CRLでの証明書ステータスのチェックと、ステータスのオンラインチェックのためのOCSPの使用が含まれます。ドキュメントによると、.NETはCRLのみをチェックしますが、「オンライン」はおそらくCRLをダウンロードする必要があることを意味します。この場合、エラーは、CRLの場所が見つからなかった(証明書に存在しない)か、到達できなかったことを意味している可能性があります。

実行する最初のステップは、証明書にCRLの場所が含まれているかどうかを検査することです。これは、証明書のプロパティで確認できます。CRL配布ポイント拡張機能があります。

CRLの場所が存在し、HTTP / HTTPS URLを指している場合は、そのURLをチェックしてアクセス可能かどうかを確認できます。

残念ながら、これらの手順は自動化できますが、問題の原因はカバーされていません。CRLの形式が正しくないか、サーバーがCRLを返さない(エラー応答など)か、CRLの署名が無効である可能性があります。したがって、上記の手順では、問題に関する基本的な情報のみが提供されます。

.NETが障害のより意味のある説明を生成できるかどうかはわかりません。コンポーネント(SecureBlackbox)では、障害に関する詳細を提供していますが、このトピックに関する広範なFAQ記事が存在するにもかかわらず、この質問はテクニカルサポートで頻繁に受ける質問です。

于 2012-12-14T16:34:34.827 に答える