15.01.2004 10:40:45 | CryptoAPI в виндовых сервисах | | Ответов: 6 |
|
Александр | | |
|
Написали прогу в виде виндового сервиса, а она не хочет видеть сертификат в указываемом хранилище, хотя до этого, когда это было просто приложение все работало. Может есть тонкости при использовании CryptoAPI для сервисов? |
|
Ответы:
|
15.01.2004 11:30:59 | Седов Роман |
|
Вопрос стоит в том, из-под какой учетной записи работает приложение. В случае серсиса это, скорее всего, - "SYSTEM".
Попробуйте настроить сервис на работу из-под той учетной записи, сертификаты хранилищ которой нужно "видеть". |
|
15.01.2004 11:31:39 | Седов Роман |
|
. |
|
15.01.2004 13:24:14 | Александр |
|
А если сертификаты у нас хранятся в CERT_SYSTEM_STORE_LOCAL_MACHINE, а ключи в реестре? |
|
15.01.2004 13:45:28 | Седов Роман |
|
С какими параметрами вы вызываете функцию CertOpenStore? |
|
15.01.2004 20:00:39 | Александр |
|
hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,0,hProv,CERT_SYSTEM_STORE_LOCAL_MACHINE,L"MY"); |
|
|
1. Проверить, действительно ли сертификат установлен в физическое хранилище My - Local_Machine, а не куда-нибудь еще. В оснастке MMC "Сертификаты" в меню вид выбрать показ "физических" хранилищ, и проверить, что хранилище "Сертификаты (локальный компьютер)"/Личные/Реестр/Сертификаты содержит требуемый сертификат. Если используются e-token-ы, то могут быть и другие хранилища.
2. Если проверка покажет, что все нормально, сертификат есть, попробовать запустить сервис под вашей учетной записью. Если начнет работать, т.е. сертификат будет найден, - все дело в правах доступа к хранилищу. System не имеет право читать сертфикаты. Если работать не будет и так, нужно смотреть код, который ищет сертфиикаты в хранилище, скорее всего там что-то не так. |
|