26.01.2007 4:25:02Обращение к eToken из системного сервиса. -2 Ответов: 7
andrey
подскажите как скопировать сертификат именно из etokena
 
Ответы:
26.01.2007 17:53:07Василий
Какой алгоритм сертификата:
ГОСТ (на "КриптоПро CSP")?
или RSA (на "eToken base CSP")?
29.01.2007 15:35:47andrey
не знаю где точно посмотреть, в сертификате написано
ГОСТ Р 34.11/34.10-94 etoken+крипто-про csp 2
29.01.2007 16:00:21Василий
Если алгоритм открытого ключа сертификата ГОСТ, то сертификат на етокене может находиться только внутри ключевого контейнера.
Чтобы его добыть оттуда, нужно:
1) знать имя контейнера, если оно неизвестно - перечислить все доступные контейнеры и выбрать из них те, что на етокене (по префиксу).
В двух словах - это
CryptAcquireContext(&hProv, NULL, NULL, 75, CRYPT_VERIFYCONTEXT)
CryptGetProvParam(hProv,PP_ENUM_CONTAINERS,...,CRYPT_UNIQUE)

2) открываем контейнер по имени
CryptAcquireContext(&hProv, имя, NULL, 75, 0)
3) Открываем ключ из контейнера:
CryptGetUserKey(..AT_KEYEXCHANGE (или AT_SIGNATURE) )
4) Открываем сертификат:
CryptGetKeyParam(..KP_CERTIFICATE..)
29.01.2007 17:30:37andrey
может не правильно рассказал что хочется получить.
есть приложение когда запускаю его от локального пользователя всё ок, всё работает. Как только запускаю его как сервис от имени Local System то приложение не работает. Пробовал запускать сервис от своего имени тоже не работает. подскажите что может не хватать
29.01.2007 17:39:36Василий
Если это Win2003 и выше, то "злой" MS сильно ограничил доступ к считывателям смарткарт (в т.ч. виртуальным) при обращении из служб.
В принципе, известно, где и какие права надо добавить, но, к сожалению, это надо делать каждый раз после перезагрузки ОС.
Возможно, производитель данного оборудования (Аладдин) напишет утилиту, которая будет этим заниматься.
29.01.2007 17:48:04andrey
а подскажите где какие права нужно поставить ?
30.01.2007 12:53:04Василий
Службу "Смарт-карты" ("Smart Card") запускать от аккаунта с правами администратора (лучше от того же, от которого работает Ваш сервис). Далее на событие (Event) с названием "Microsoft Smart Card Resource Manager Started" нужно дать полные права этому же аккаунту, после чего перестартовать службу "Смарт-карты"
После перезагрузки ОС - всё заново.

Для редактирования прав на событие я использовал утилиту accessmaster.exe, которую прислал Аладдин.