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

Уведомление

Icon
Error

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

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

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

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

В службе windows для доступа к rest сервису необходимо использовать сертификат.
Этот сертификат находится в контейнере, у которого установлен пароль.
При обращении к rest сервису в коде : request.GetResponse() у меня должно появляться окошко, с запросом пароля на контейнер. Но поскольку это служба windows, окошко не отображается.
Подскажите, как это можно обойти или как задать пароль програмно в C#?
Offline nex-54  
#2 Оставлено : 26 июля 2011 г. 13:02:32(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;
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.