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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Макс  
#1 Оставлено : 30 марта 2009 г. 14:26:38(UTC)
Макс

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

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

Доброго времени суток!
Возникла проблема, может кто подскажет пути решения? Дело в следующем:

Как уже было сказано, вызов производится из контекста сервиса. Сертификат соответственно установлен в хранилище Apache2\My, то есть зашифровать все получается, сертификат находится.
При дешифровке данных вызов функции CryptFindCertificateKeyProvInfo(pReceiver, 0/*CRYPT_FIND_USER_KEYSET_FLAG*/, NULL) неудачен при любом флаге(закомментирован). Ошибка 0x8009000D (ключ не существует).
pReceiver - это найденый в хранилище сертификат. То есть хранилище сервиса открывается, сертификат находится, но...
При этом при просмотре через mmc говорится, что есть закрытый ключ, соответствующий данному сертификату!
Offline Татьяна  
#2 Оставлено : 30 марта 2009 г. 22:29:14(UTC)
Татьяна

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

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
в общем случае зашифрование можно произвести и без сертификата отправителя: то, что зашифрование проходит говорит не слишком о многом.

а в mmc сертификат виден в сертификатах пользователя или в сертификатах локального компьютера? если в сертификатах пользователя, от уточните от чьего имени запускаете mmc.

если запускаете просто от имени залогиненного пользователя, наличие там сертификата опять же не говорит о том, что он будет доступен сервису.
Татьяна
ООО Крипто-Про
Offline Макс  
#3 Оставлено : 31 марта 2009 г. 14:53:47(UTC)
Макс

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

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

В моем случае это говорит, ведь весь исходный код я писал сам, и то, что сертификат ищется и находится, уверен.
Проблема оказывается вот в чем:
В Windows хранилища делятся на три категории - пользовательские, компьютера, сервисов(служб). В моем случае шифрование проходило под пользователем, а дешифрование - под службой. На вашем тестовом сайте, как я понял, нельзя установить сертификат для сервиса. И в то же время вы решили не давать возможности экспортировать сертификат с закрытым ключом(???). Таким образом, сертификат установился под пользователя и под ним работал нормально. Под службой(даже если экспортировать его в соответствующее хранилище) - соответственно фигвам. :) Кстати, интересная особенность - если сертификат в консоли mmc скопировать из одного хранилища в другое с помощью обычного "копи-паст"(а это оснастка позволяет!), то в итоге в обоих хранилищах у сертификата будет "есть закрытый ключ". Если же как положено - экспорт-импорт, то во втором случае уже нет.:)
В общем, решение пока только одно - устанавливать сертификат в хранилище копмпьютера..
Offline Kirill Sobolev  
#4 Оставлено : 31 марта 2009 г. 16:43:03(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
В общем, решение пока только одно - устанавливать сертификат в хранилище копмпьютера..

Совершенно верно.
Кстати, аналогичным решением пользуется, например, IIS.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.