【发布时间】:2011-12-24 08:20:08
【问题描述】:
我想验证证书链,我得到了一个 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构建,我该如何定义这种行为? - 我看到链构建后它不包含根证书;我的问题是为什么,以及如何验证链是否具有根 CA,因为这不是链元素的一部分。
如果有人能向我解释Build() 方法的工作原理,我将不胜感激。
【问题讨论】:
-
您找到解决方案了吗?
标签: c# certificate x509certificate2