| ||||
| ||||
Ситуация: Пользователь с правами админа создает машинный кейсет и ключ обмена (CRYPT_MACHINE_KEYSET). Другой пользователь с правами админа пытается открыть этот кейсет и получить ключ. Вызов ::CryptAcquireContext() заканчивается с ошибкой. ::GetLastError() возвращает 0x8009001A : "Неправильный зарегистрированный набор ключей." Как это понимать? Как получить "правильный" набор ключей? | ||||
Ответы: | ||||
| ||||
Будьте добры - в двух словах - версия (билд) CSP - версия ОС - с каким флагом вызывает второй пользователь - используется ли "Служба хранения ключей" | ||||
| ||||
- КриптоПро CSP 1.1 (Build 139) - Windows XP Prof SP1 - Не используется, ключи хранятся в памяти приложений Создается контейнер так (обработка ошибок опущена): Пользователь Alice (админ): HCRYPTPROV prov; ::CryptAcquireContext(&prov, “keyset”, CP_DEF_PROV, CRYPT_NEWKEYSET | CRYPT_MACHINE_KEYSET); HCRYPTKEY key; ::CryptGenKey(prov, AT_KEYEXCHANGE, CRYPT_EXPORTABLE, &key); // все ок, закрывает хэндлы Пользователь Bob (админ): HCRYPTPROV prov; ::CryptAcquireContext(&prov, “keyset”, CP_DEF_PROV, CRYPT_SILENT | CRYPT_MACHINE_KEYSET); // облом И еще вопрос. Если я создам CRYPT_MACHINE_KEYSET и явно разрешу доступ к нему другому пользователю-не-админу прочитав, изменив и установив DACL кейсета при помощи CryptSetProvParam(…,PP_KEYSET_SEC_DESCR, …), то сможет ли этот пользователь-не-админ открыть этот кейсет? MSDN говорит, что это возможно для MS провайдеров. Возможно ли это для КриптоПро? | ||||
| ||||
Я проверю приведённый пример. На вопрос о DACL - если правильно поменять, то да. Там не только права на сам контейнер, но и на разделы реестра, содержащие его - начиная с HKLM\Software. | ||||
| ||||
Вот цитата из нашей документации по CSP 1.1: "СКЗИ КриптоПРО CSP функционирует в следующих операционных системах (ОС): • Windows 95 с установленным ПО MS Internet Explorer версии 5.0 и выше; • Windows 95 OSR2 с установленным ПО MS Internet Explorer версии 5.0 и выше; • Windows 98 с установленным ПО MS Internet Explorer версии 5.0 и выше; • Windows 98 SE с установленным ПО MS Internet Explorer версии 5.0 и выше; • Windows NT 4.0 SP5 и выше с установленным ПО MS Internet Explorer 5.0 и выше; • Windows ME; • Windows 2000." Про ХР, стало быть, речи нет. Кое-что там может работать, а может и не работать. В данном случае не живёт флажок CRYPT_SILENT. Если его снести, всё намного лучше... Но в любом случае все эксперименты с ХР на Ваш страх и риск. Используйте продукт "Крипто-Про CSP 2.0". | ||||
| ||||
Спасибо за важную информацию. Флажок CRYPT_SILENT для нас крайне важен - код выполняется из под неинтерактивного сервиса, а КриптоПро кидает нам message box ("Срок действия бла-бла-бла..."). :((( Сервис открывает существующий контейнер, извлекает оттуда существующий ключ обмена. Версия 2 вашего продукта поддерживает ли этот флажок? Не будет ли она его игнорировать и все равно кидать message box? | ||||
| ||||
По поводу срока действия - окошко появляется в том случае, если до конца лицензии меньше 30 дней. От версии не зависит. Метод лечения - либо открыть какой-нибудь контейнер без CRYPT_SILENT и нажать в окошке ок (после чего в течение этого дня такого окошка не будет), либо приобрести лицензию на необходимый срок (или неограниченную). P.S. Срок действия лицензии отсчитывается от даты первой установки CSP на компьютер. | ||||