HttpClientHandler.ServerCertificateCustomValidationCallback
を使用してクライアント証明書を検証しようとしています。 ChainPolicy
パラメータでx509chain
を作成しました。ローカルCRLファイル(C#)で検証処理中にクライアント証明書失効を確認する方法
私はローカルに自分のCRL(.pem)ファイルを持っていますので、取り消しプロセスに追加したいと思います。
私はCRL validationのようなことを考えていましたが、X509Certificate
にX509Extension
のdistributionPoint oidをインポートしましたが、私は理解できません。ここで
は、あなた自身のCRLをホストしたい場合は、それがホストすることができますので、あなたは、どこかに設定したサーバが必要になります私のコールバックコード
private static Func<HttpRequestMessage, X509Certificate2, X509Chain, SslPolicyErrors, bool>
ServerCertificateCustomValidationCallback()
{
return (sender, cert, chain, sslPolicyErrors) =>
{
X509Certificate2 ca = new X509Certificate2(@"pathToCa\\ca.crt");
X509Chain chai = new X509Chain();
chai.ChainPolicy.ExtraStore.Add(ca);
chai.ChainPolicy.RevocationFlag = X509RevocationFlag.ExcludeRoot;
chai.ChainPolicy.RevocationMode = X509RevocationMode.Online;
chai.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;
chai.ChainPolicy.VerificationTime = DateTime.Now;
try
{
if (!chai.Build(cert))
{
return false;
}
foreach (X509ChainStatus status in chai.ChainStatus)
{
if (status.Status == X509ChainStatusFlags.UntrustedRoot) continue;
if (status.Status == X509ChainStatusFlags.OfflineRevocation) continue;
if (status.Status == X509ChainStatusFlags.RevocationStatusUnknown) continue;
return false;
}
}
catch (Exception e)
{
throw e;
}
return true;
};
}
あなたの助けに感謝&明確化
さんはなに? –
@Mike_G申し訳ありませんが、それは私の最初の投稿です。ローカルCRLファイルを失効プロセスに追加するにはどうすればよいですか? –