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