12.10.2007 16:35:57Проверка валидности сертификата с помощью CAPICOM Ответов: 9
Дмитрий
Проверяю валидность сертификата с помощью следующего кода:
Status = Certificate.IsValid();
Result = Status.Result;
VerificationDate = Status.VerificationTime;
Чтобы проверить, работает ли он, отключаю соединение с Internet (ведь по умолчанию CertificateStatus.CheckFlag равено CAPICOM_CHECK_ONLINE_ALL).
Проверка все равно проходит успешно (Result = true). В тоже время если проверять сертификат из хранилища в КриптоАРМ, то при отсутствии соединения проверка становится безуспешной. В чем может быть причина неверной работы кода?
 
Ответы:
12.10.2007 18:30:45Kirill Sobolev
В сеть CAPICOM лезет только если локально не найдет неистекшего CRL. А КриптоАРМ, насколько я знаю, всегда скачивает принудительно (или там это настраивается)
15.10.2007 10:51:50Дмитрий
А есть ли способ очистить кэш CLR?
15.10.2007 11:23:31Kirill Sobolev
Конечно. Для этого надо удалить соответствующий CRL из \Documents and Settings\<имя пользователя>\Application Data\Microsoft\CryptnetUrlCache\Content\
15.10.2007 13:22:07Дмитрий
Почистил кэш, отключил инет - не помогло. Все равно Result = true.
15.10.2007 13:42:26Kirill Sobolev
А в хранилище CRL установлен?
15.10.2007 16:08:33Дмитрий
Не понял вопроса.
Я полагал, что в хранилище устанавливаются непосредственно сертификаты, а в CLR хранятся данные об их валидности и CLR получается от УД.
15.10.2007 16:49:49Kirill Sobolev
Нет, CRL тоже может быть установлен в хранилище. Именно там их в первую очередь CAPICOM и ищет.
15.10.2007 20:00:04Дмитрий
Следующий вопрос, как вы уже догадались :), будет "как узнать, что CLR установлен в хранилище и очистить его там?
Объект Store, например, ничего не знает про CLR.
16.10.2007 12:11:41Kirill Sobolev
Придется воспользоваться CryptoAPI или .NET