我想驗證證書鏈,我得到一個X509Certificate2
集合,並且必須驗證所有證書是否構建一個鏈。X509Chain.Build()方法說明
通常情況下,爲了驗證證書連鎖,我應該從葉證書採取數字簽名並檢查它是否是由根證書籤名 - 在.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()
方法的工作原理,我將非常感激。
您是否找到解決方案? – ArielB