我想验证证书链,我得到一个X509Certificate2
集合,并且必须验证所有证书是否都建立了一个链。
通常,为了验证证书链,我应该从叶证书中获取数字签名,并检查它是否由根证书签名-但.NET中的,我找不到从X509Certificate2
中提取签名的方法目的。
因此,我想到了通过以下方式使用X509Chain.Build()
方法:
void ValidateChain(X509Certificate2Collection collection, X509Certificate2 leaf)
{
X509Chain x509Chain = new X509Chain();
x509Chain.ChainPolicy.ExtraStore.AddRange(collection);
bool isValid = x509Chain.Build(leaf);
}
但是我对构建方法有一些疑问:
ExtraStore
构建,如何定义此行为? 如果有人可以向我解释
Build()
方法的工作原理,我将不胜感激。 最佳答案
您应该在Build操作之后使用ChainStatus值。 MSDN: