Использует ли X590Certificate.Build OCSP, если используется ChainPolicy RevocationMode Online?

Если у вас есть код вроде следующего: используется ли OCSP для «интерактивной» проверки отзыва?

X509Chain ch = new X509Chain();
ch.ChainPolicy.RevocationMode = X509RevocationMode.Online;
ch.Build (certificate);

В документации API об этом не говорится прямо:

«Проверка отзыва производится с помощью онлайн-списка отзыва сертификатов (CRL)».

но не сообщая подробностей о том, как производится проверка

Методы X509Chain.Buld проверяют, имеет ли свойство szOID_AUTHORITY_INFO_ACCESS значение - я знаю, что именно здесь хранятся URL-адреса OCSP, поэтому опять же это может означать, что используется OCSP.

Затем Build вызывает BuildChain, и выполняется вызов CertGeCertificateChain, передавая флаги отзыва unsigned int.

В документации для GetCertificateChain указаны возможные флаги, которые можно передать, включая CERT_CHAIN_REVOCATION_CHECK_OCSP_CERT:

"Этот флаг используется внутри во время построения цепочки для сертификата подписавшего онлайн-протокола статуса сертификата (OCSP), чтобы предотвратить циклические проверки отзыва. Если во время построения цепочки ответ OCSP подписан независимой подписывающей стороной OCSP, то в дополнение к исходной цепочке build, создается вторая цепочка для самого сертификата подписывающей стороны OCSP. Этот флаг используется во время этой второй сборки цепочки, чтобы запретить рекурсивный независимый сертификат подписывающей стороны OCSP. Если подписывающий сертификат содержит расширение szOID_PKIX_OCSP_NOCHECK, проверка отзыва для конечной подписывающей стороны пропускается сертификат. Разрешены как проверка OCSP, так и проверка CRL ".

Поскольку существует флаг для «запрета» проверки OCSP, я думаю, что это действительно происходит, но, опять же, было бы неплохо получить явное подтверждение этого.


person Malcolm Tucker's Wyvern    schedule 28.05.2019    source источник


Ответы (1)


Если OCSP - единственный вариант, например Let's Encrypt, тогда да. Если доступны и OCSP, и CRL, система выбирает то, что ей нужно, используя другое, когда первый вариант дает неверные / просроченные ответы.

(В .NET Core для Linux OCSP не использовался до версии 3.0)

person bartonjs    schedule 28.05.2019