Я хочу проверить цепочку сертификатов, я получаю коллекцию 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
, как я могу определить это поведение? - Я видел, что после того, как цепочка была построена, она нене содержит корневой сертификат;у меня вопрос почему и как я могу убедиться, что в цепочке есть Root CA, поскольку это не является частью элементов цепочки.
Буду очень признателен, если кто-то сможетобъясните мне, как работает метод Build()
.