Я смотрю на сравнение сертификата пользователя с корневым сертификатом.Если я устанавливаю корневой сертификат в магазине Windows, все работает нормально.Однако для моего приложения установка сертификата в хранилище невозможна.
Когда я не устанавливаю сертификат, я получаю ожидаемый статус UntrustedRoot, но я также получаю RevocationOffline и RevocationStatusUnknown.
Из того, что я прочитал, проверка отзыва выполняется только в цепочке, которая заканчивается самозаверяющим сертификатом в доверенном корневом хранилище.Есть ли другой способ выполнить проверку отзыва после вызова chain.Build
?Или я могу настроить что-либо до Build
, чтобы он по-прежнему выполнял проверку с ненадежным рутом?Я стараюсь по возможности избегать использования сторонних библиотек.
У меня
X509Chain chain = new X509Chain
chain.ChainPolicy.RevocationMode = X509RevocationMode.Online
chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain
chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority;
chain.ChainPolicy.ExtraStore.Add(root);
isValid = chain.Build(certificate);
// Check Byte Code
var chainRoot = chain.ChainElements[chain.ChainElements.Count - 1].Certificate;
isValid = isValid && chainRoot.RawData.SequenceEqual(root.RawData);