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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Akinak  
#1 Оставлено : 8 сентября 2008 г. 21:34:12(UTC)
Akinak

Статус: Новичок

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

Добрый день!

Есть код:

Код:
  
       CspParameters par = new CspParameters(75, null, _SourceContainer);
                
       Gost3410CryptoServiceProvider destCont = new Gost3410CryptoServiceProvider(par);
       ..........


_SourceContainer - это строка с именем ключевого контейнера.

При запуске данного кода на Windows XP SP2 в виде исполняемого модуля (exe-шника) и в виде службы Windows все корректно обрабатывается. При запуске на Windows 2003 R2 SP2 в качестве исполняемого модуля все работает. Но если этот же код запустить в виде windows-службы, возникает исключение во второй строке "Неправильный параметр набора ключей".

Подскажите в какую сторону копать.

Спасибо.

Offline Челпанов А.  
#2 Оставлено : 8 сентября 2008 г. 21:37:40(UTC)
Челпанов А.

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
Какой CSP используется? Сообщите пожалуйста полный номер версии.
С уважением, Александр.
Offline Akinak  
#3 Оставлено : 8 сентября 2008 г. 22:23:29(UTC)
Akinak

Статус: Новичок

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

Крипто Про 3.0 SP3 (КС1 3.0.3300.3)
версия Sharpei 1.0.3124.0

Ключевой контейнер прописан в реестре.

Сейчас был поставлен опыт - удаление из списка считывателей диска 3,5.
Описание ошибки:
Поставщик не смог выполнить действие, поскольку контекст был получен как "тихий".

После возвратили диск 3,5 и перепрописали ключевой контейнер на диск 3,5 и заново связали с сертификатом - ошибка вернулась:
Неправильный параметр набора ключей
Offline IvanZzz  
#4 Оставлено : 8 сентября 2008 г. 22:50:55(UTC)
IvanZzz

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.04.2008(UTC)
Сообщений: 519
Мужчина
Откуда: Крипто-Про

Akinak написал:
Неправильный параметр набора ключей

Попробуйте установить сертификат с привязкой к контейнеру в локальное хранилище компьютера. Для этого: Сервис->Установить личный сертификат-> при выборе ключевого контейнера установите Введенное имя задает ключевой контейнер: -Компьютера.

Отредактировано пользователем 9 сентября 2008 г. 14:18:41(UTC)  | Причина: Не указана

Offline Akinak  
#5 Оставлено : 9 сентября 2008 г. 13:55:45(UTC)
Akinak

Статус: Новичок

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

Цитата:
Попробуйте установить сертификат с привязкой к контейнеру в локальное хранилище компьютера. Для этого: Сервис->Установить личный сертификат-> при выборе ключевого контейнера установите Введенное имя задает ключевой контейнер: -Компьютера.


Сертификат уже находится в локальном хранилище, в личных сертификатах и привязан к контейнеру.
Offline IvanZzz  
#6 Оставлено : 9 сентября 2008 г. 14:26:57(UTC)
IvanZzz

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.04.2008(UTC)
Сообщений: 519
Мужчина
Откуда: Крипто-Про

В личном хранилище -Компьютера или -Пользователя? mmc->Консоль->Добавить или удалить остнастку->Сертификаты
Offline Akinak  
#7 Оставлено : 9 сентября 2008 г. 17:18:43(UTC)
Akinak

Статус: Новичок

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

Цитата:
В личном хранилище -Компьютера или -Пользователя? mmc->Консоль->Добавить или удалить остнастку->Сертификаты


К сожалению попробовал и так и так. Эффект одинаковый. У меня подозрение, что возможно создается какая-нибудь форма, чего в службе делать нельзя.

PS. Опыты на Windows XP показали, что там тожу служба не работает. Извините за ошибку в первом посте.
Offline Akinak  
#8 Оставлено : 11 сентября 2008 г. 16:45:11(UTC)
Akinak

Статус: Новичок

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

Проблема частично решилась, если хранить сертификат и ключевой контейнер в хранилище пользователя и запускать службу от имени данного пользователя - то все работает.
Теперь вопрос заключается в следующем, как считать ключевую информациюю из хранилища компьютера с помощью Sharpey?

Код:
       
                CspParameters par = new CspParameters(75, null, "Keys");
                Gost3410CryptoServiceProvider.UseMachineKeyStore = true;
                Gost3410CryptoServiceProvider destCont = new Gost3410CryptoServiceProvider(par);

Данный код, если ключи находятся в хранилище компьтера, никаких ключей не находит.
Хотя в реестре есть ключи с таким именем.
В хелпе было сказано, что еще можно указать тип хранилища с помощью класса CspParameters, но я не нашел как.
Offline Челпанов А.  
#9 Оставлено : 11 сентября 2008 г. 17:57:33(UTC)
Челпанов А.

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
Установка статического флага MachineKeyStore
Код:
Gost3410CryptoServiceProvider.UseMachineKeyStore = true;
влияет только на загрузку контейнеров, для которых этот флаг не указан. Например в коде,
Код:
Gost3410CryptoServiceProvider gost = new Gost3410CryptoServiceProvider();
будет использовано значение статического флага UseMachineKeyStore. В случае, когда передается CspParameters явно, будет использовано значение флага из переданного класса. Так в коде
Код:
CspParameters par = new CspParameters(75, null, "Keys");
Gost3410CryptoServiceProvider destCont = new Gost3410CryptoServiceProvider(par);
при доступе к контейнеру, будет использовано значение флага из par, которое устанавливается в false в конструкторе, в не зависимости от значения статической переменной Gost3410CryptoServiceProvider.UseMachineKeyStore. Для того, чтобы обратится к ключам из локального хранилища, необходимо установить флаг CspProviderFlags.UseMachineKeyStore для CspParameters. Например в коде,
Код:
CspParameters par = new CspParameters(75, null, "Keys");
par.Flags |= CspProviderFlags.UseMachineKeyStore;
Gost3410CryptoServiceProvider destCont = new Gost3410CryptoServiceProvider(par);
будет получен контейнер из локального хранилища.
С уважением, Александр.
Offline Akinak  
#10 Оставлено : 11 сентября 2008 г. 19:47:23(UTC)
Akinak

Статус: Новичок

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

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