Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline mick  
#1 Оставлено : 28 июля 2009 г. 18:20:20(UTC)
mick

Статус: Участник

Группы: Участники
Зарегистрирован: 15.04.2009(UTC)
Сообщений: 15
Откуда: no

Скажите пожалуйста, возможно ли вообще пользоваться файловыми хранилищами сертификатов при использовании simplified CryptoAPI функций?

Дело в том, что одним из участников системы у меня является неинтерактивное приложение (системный сервис 24x7)
В силу ряда причин хочется, чтобы он использовал файловое хранилище сертификатов.
Но когда я помещаю сертификаты в файловое хранилище и связываю личный сертификат сервиса с его ключевым контейнером,
то симплифаед функции не могут найти контейнер по сертификату. В лучшем случае появляется диалоговое окно крипто с предложением вставить контейнер и имя контейнера из вопросительных знаков.
При переходе на системное хранилище "MY" все работает замечательно.

Или подскажите какое хранилище лучше использовать для неинтерактивных приложений.
(проблема в том, что к нему должен иметь доступ администратор, и не обязательно с хоста на котором работает сервис. Плюс еще сам сервис может работать как из под local system account, так и из под специальной учетки)
Offline Kirill Sobolev  
#2 Оставлено : 28 июля 2009 г. 19:05:19(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Возможно. Каким именно файловым хранилищем и как Вы пользуетесь?
"MY" отлично подходит для таких целей (с ним, например, работает IIS).
А также Вы можете создать свое хранилище в HKLM.
Техническую поддержку оказываем тут
Наша база знаний
Offline mick  
#3 Оставлено : 28 июля 2009 г. 19:24:51(UTC)
mick

Статус: Участник

Группы: Участники
Зарегистрирован: 15.04.2009(UTC)
Сообщений: 15
Откуда: no

файловое хранилище у меня создается вот так

hStore := CertOpenStore(CERT_STORE_PROV_FILENAME,
PKCS_7_ASN_ENCODING or X509_ASN_ENCODING,
0,
CERT_STORE_CREATE_NEW_FLAG or CERT_FILE_STORE_COMMIT_ENABLE_FLAG,
wFileName //имя файла в юникоде
);

Я в него добавляю CA сертификаты сервиса. При просмотре его через CryptUIDlgSelectCertificateFromStore
и открытии сертификатов Виндоус говорит, что есть приватный ключ для сертификатов.

Но при вызовах симплифаед функций (например при CryptDecryptMessage) получаю ошибку что не найден приватный ключ.

Offline Kirill Sobolev  
#4 Оставлено : 28 июля 2009 г. 19:51:11(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
в окне пишут что есть ключ если у сертификата просто есть ссылка в хранилище на него, действительность этой ссылки не проверяется.
а где хранятся ключи?
Техническую поддержку оказываем тут
Наша база знаний
Offline mick  
#5 Оставлено : 28 июля 2009 г. 19:53:11(UTC)
mick

Статус: Участник

Группы: Участники
Зарегистрирован: 15.04.2009(UTC)
Сообщений: 15
Откуда: no

контейнеры в реестре.
что самое странное - если ничего в коде не менять, а только перейти на MY, то все работает.
Offline Kirill Sobolev  
#6 Оставлено : 28 июля 2009 г. 19:54:33(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
в реестре компьютера или локального пользователя?
в MY Вы тоже программно сертификаты добавляли или они уже туда были поставлены?
Техническую поддержку оказываем тут
Наша база знаний
Offline mick  
#7 Оставлено : 28 июля 2009 г. 19:58:20(UTC)
mick

Статус: Участник

Группы: Участники
Зарегистрирован: 15.04.2009(UTC)
Сообщений: 15
Откуда: no

в реестре текущего юзера (отлаживаю конечно в гуи-приложении, а не в сервисе)
сертификаты добавляются в хранилище одним и тем же кодом (в функцию передается готовый HCERTSTORE)
с контейнером связываются тоже одним и тем же кодом.

...
if AInstalledCert <> nil then
begin
//Связываем с приватным ключом
AContainerName := PChar(ACustomData);
ZeroMemory(@KeyInfo,SizeOf(CRYPT_KEY_PROV_INFO));
KeyInfo.pwszContainerName := PWideChar(AContainerName);
KeyInfo.pwszProvName := PWideChar(CP_GR3410_2001_PROV_W);
KeyInfo.dwProvType := PROV_GOST_2001_DH;
KeyInfo.dwKeySpec := sc_GetCertPubKeytype(AInstalledCert); //AT_KEYEXCHANGE;
if not CertSetCertificateContextProperty(AInstalledCert,CERT_KEY_PROV_INFO_PROP_ID,0,@KeyInfo) then RaiseLastWin32Error;
....
Offline Kirill Sobolev  
#8 Оставлено : 28 июля 2009 г. 20:24:51(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
А ссылки после добавления в файловое хранилище похожи на те, которые в MY?
Техническую поддержку оказываем тут
Наша база знаний
Offline mick  
#9 Оставлено : 28 июля 2009 г. 20:34:27(UTC)
mick

Статус: Участник

Группы: Участники
Зарегистрирован: 15.04.2009(UTC)
Сообщений: 15
Откуда: no

да, внутри файлового хранилища четко видно (FAR + F3) имя провайдера и имя контейнера вида \ \c o n t a i n e r
Offline Kirill Sobolev  
#10 Оставлено : 28 июля 2009 г. 20:50:49(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
пришлите, пожалуйста, это хранилище на support@cryptopro.ru.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.