Если у вас есть код вроде следующего: используется ли 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, я думаю, что это действительно происходит, но, опять же, было бы неплохо получить явное подтверждение этого.