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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline nex-54  
#1 Оставлено : 26 июля 2011 г. 12:45:15(UTC)
nex-54

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

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

Сказал «Спасибо»: 1 раз
Доброго времени суток!

В службе windows для доступа к rest сервису необходимо использовать сертификат.
Этот сертификат находится в контейнере, у которого установлен пароль.
При обращении к rest сервису в коде : request.GetResponse() у меня должно появляться окошко, с запросом пароля на контейнер. Но поскольку это служба windows, окошко не отображается.
Подскажите, как это можно обойти или как задать пароль програмно в C#?
Offline nex-54  
#2 Оставлено : 26 июля 2011 г. 13:03:06(UTC)
nex-54

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

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

Сказал «Спасибо»: 1 раз
Пытаюсь использовать такой код:

// Получаю сертификат по серийному номеру
X509Store store = new X509Store(StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var certColl = store.Certificates.Find(X509FindType.FindBySerialNumber, CertificatePath, false);
if (certColl.Count != 1)
throw new Exception(String.Format("One certificate expected. Found {0} certificates.", certColl.Count));
_restCertificate = certColl[0];

// Получаю имя контейнера
AsymmetricAlgorithm asym = _restCertificate.PrivateKey;
ICspAsymmetricAlgorithm iasym = asym as ICspAsymmetricAlgorithm;
CspKeyContainerInfo info = iasym.CspKeyContainerInfo;
string s = info.KeyContainerName;

// Пытаюсь указать пароль для контейнера
CspParameters cspParameters = new CspParameters();
cspParameters.ProviderType = 75;
cspParameters.KeyContainerName = s;

// Задаю пароль.
var str = new SecureString();
str.AppendChar('p');
str.AppendChar('a');
str.AppendChar('r');
str.AppendChar('o');
str.AppendChar('l');
cspParameters.KeyPassword = str;

Gost3410CryptoServiceProvider prov = new Gost3410CryptoServiceProvider(cspParameters);

// Хочу получить сертификат из контейнера. Но получаю null. Притом, если парль не стоит и я его не указываю, то всеравно получаю null
_restCertificate = prov.ContainerCertificate;
Offline Павел Смирнов  
#3 Оставлено : 26 июля 2011 г. 14:16:07(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
А в этом контейнере есть сертификат? Это можно посмотреть через панель КриптоПро CSP.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline nex-54  
#4 Оставлено : 26 июля 2011 г. 14:43:29(UTC)
nex-54

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

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

Сказал «Спасибо»: 1 раз
точно есть.
тем более, в приведенном коде, я вначале ищу сертификат и уже от него получаю имя содержащего его контейнера.
Offline Павел Смирнов  
#5 Оставлено : 26 июля 2011 г. 14:52:36(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
В коде Вы ищете сертификат в хранилище. Через панель КриптоПро CSP убедились в наличии сертификата?
Техническую поддержку оказываем тут.
Наша база знаний.
Offline nex-54  
#6 Оставлено : 26 июля 2011 г. 14:59:50(UTC)
nex-54

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

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

Сказал «Спасибо»: 1 раз
да, в хранилище. и после этого получаю от него имя контейнера. Я так понимаю, что это должно означать, что контейнер будет содержать этот сертификат.
через панель убедился, сертификат присутствует в контейнере.
Offline nex-54  
#7 Оставлено : 26 июля 2011 г. 15:05:32(UTC)
nex-54

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

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

Сказал «Спасибо»: 1 раз
Подскажите еще, я правильно пароль задаю для контейнера? Немного странно, что он задается посимвольно)
Offline Павел Смирнов  
#8 Оставлено : 26 июля 2011 г. 15:34:37(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
nex-54 написал:
Подскажите еще, я правильно пароль задаю для контейнера? Немного странно, что он задается посимвольно)

C SecureString по-другому нельзя.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Павел Смирнов  
#9 Оставлено : 26 июля 2011 г. 15:37:10(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
nex-54 написал:
да, в хранилище. и после этого получаю от него имя контейнера. Я так понимаю, что это должно означать, что контейнер будет содержать этот сертификат.

Не означает.

nex-54 написал:
через панель убедился, сертификат присутствует в контейнере.

Проблему поисследуем. Попробуйте другой способ предварительного открытия контейнера с паролем - один из описанных здесь (вопрос Как подписывать CMS сообщение при помощи секретных ключей, которые имеют пароль).
Техническую поддержку оказываем тут.
Наша база знаний.
Offline nex-54  
#10 Оставлено : 26 июля 2011 г. 15:41:44(UTC)
nex-54

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

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

Сказал «Спасибо»: 1 раз
Спасибо за помощь, попробую еще варианты.
использую CryptoPro Csp: Core version 3.6.5359 KC1, Product version 3.6.6756
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.