証明書のチェーンを検証したいのですが、X509Certificate2
コレクションを取得し、すべての証明書が 1 つのチェーンを構築するかどうかを検証する必要があります。
通常、証明書チェーンを検証するには、リーフ証明書からデジタル署名を取得し、ルート証明書によって署名されているかどうかを確認する必要がありますがX509Certificate2
、.NET ではオブジェクト から署名を抽出する方法が見つかりません。
したがって、X509Chain.Build()
次の方法でメソッドを使用することを考えました。
void ValidateChain(X509Certificate2Collection collection, X509Certificate2 leaf)
{
X509Chain x509Chain = new X509Chain();
x509Chain.ChainPolicy.ExtraStore.AddRange(collection);
bool isValid = x509Chain.Build(leaf);
}
しかし、ビルド方法についていくつか質問があります。
- 私が理解したように、チェーンは私のコンピューターストアからも構築されました. からのみ構築したいのですが、
ExtraStore
この動作をどのように定義できますか? - チェーンが構築された後、ルート証明書が含まれていないことがわかりました。私の質問は、チェーン要素の一部ではないため、チェーンにルート CA があることを確認するにはどうすればよいかということです。
メソッドがどのように機能するかを誰かが説明してくれれば、とても感謝していますBuild()
。