Проверка Cert Revocation List / OCSP, работающего в автономном режиме даже после очистки кеша - PullRequest
0 голосов
/ 06 марта 2019

Я пишу код для проверки сертификата и список отзыва, используя X509Chain. Я тестирую сертификат с сайта www.wikipedia.org и проверяю, что этот код будет использовать кэш CRL / OCSP.

        X509Chain chain = new X509Chain();
        // note: this can be offline, using a cached CRL list (but where is it stored??? Do we care???)
        chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
        chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;

        result.IsValid = chain.Build(certificate);

Когда я удаляю кеш с помощью certutil -urlcache * delete, а затем запускаю приведенный выше код с использованием сертификата википедии, он проверяет, но новые записи в кеше не имеют смысла для меня (запустите certutil -urlcache *). Я получаю эти записи:

http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab

http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab

http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/pinrulesstl.cab

Существует ли какой-либо другой уровень кэширования CRL / OCSP? Даже если я проведу тестирование с сертификатом из https://revoked.badssl.com/,, очистим кэш и установим режим отзыва в автономный режим, а компьютер перейду в автономный режим, мой код проверки по-прежнему сможет определить, что сертификат был отозван. Откуда он получает эту информацию?

Как это возможно? Что X509Chain использует в качестве кэша для выполнения этих определений Моя цель - окончательно показать, кэшируются ли результаты CRL и OCSP, но они не отображаются в certutil.

Я также читал, что есть кэш CRL системного уровня, а не только для текущего использования. Я попытался это проверить и очистить, запустив powershell и учетную запись SYSTEM. Там были разные записи, но я все равно получил те же результаты после очистки этого кэша. http://powershell -guru.com / наконечником PowerShell-53-вводного-в PowerShell-системы /

Для дополнительного тестирования я использовал certutil для проверки файла сертификата (как моей локальной учетной записи пользователя), а затем нашел запись в кеше, показанную cert util. Проверка была выполнена с помощью этой команды:

certutil -f –urlfetch -verify mycertificatefile.cer

Использует ли .NET Framework / CLR другое расположение для кэширования CRL / OCSP?

Обновление:

Итак, я обнаружил, что при использовании X509Chain результаты появляются в кеше, только если Root CA сертификата находится в Trusted Root Certification. Корневой центр сертификации википедии отсутствует в моем списке доверенных корней. "GlobalSign Root CA -R1. Попытка нового сертификата, корнем которого является DST ROot CCA X3, который указан непосредственно в доверенных корнях, добавляет записи в кэш. Также странно, что если я очищаю кэш и пытаюсь проверить этот новый сертификат в автономном режиме, он не проходит проверку, но кэш теперь содержит записи для этого CRL.

...