Согласно MSDN
var cert = Request.GetClientCertificate();
получит вам сертификат, отправленный с запросом.Для проверки теперь у вас есть два варианта.
1) проверка с использованием OCSP2) позвоните
cert.Verify();
, чтобы проверить цепочку локально, используя сертификаты в хранилище сертификатов.Это означает, что он ищет сертификат в локальном хранилище сертификатов или некоторые другие сертификаты, которые использовались для создания цепочки доверия для сертификата.
Вся тема очень широка.Если ваш сертификат был подписан каким-либо органом, то есть цепочка.a знаки b, b знаки c и c подписывают ваше свидетельство (d).Обычно у вас есть центр сертификации (CA), который подписывает запросы на сертификат для пользователей / компьютеров.Сертификат этого CA (в верхнем регистре это обычно a или b) развернут на всех машинах одной компании.
С помощью Verify () вы ищите сам сертификат, знает ли его машина.Если нет, вы идете вверх по цепочке и, как только у вас есть тот, который использовался для подписи, вы доверяете всему дереву.
d был подписан c => d неизвестно, но естьподпись ц.c тоже не известен, но подпись говорит нам, что она была подписана b.Затем b устанавливается в доверенные сертификаты вашей машины и поэтому известен.Таким образом, вы доверяете b, что позволяет доверять c и, следовательно, доверять d.
Конечно, это ничего не говорит о отзыве.Я не уверен, если .Verify () проверит список отзыва.Лучше использовать OCSP, если он у вас есть.