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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline klvking  
#1 Оставлено : 15 апреля 2011 г. 20:42:12(UTC)
klvking

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

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

При чтении сертификата из контейнера Рутокен-Магистра появляется ошибка "Неправильный параметр набора ключей" в последней строчке кода:
Цитата:
CspParameters csp = new CspParameters();
csp.ProviderType = 75;
csp.KeyContainerName = Gost3410CryptoServiceProvider.SelectContainer(true, false, IntPtr.Zero);
Gost3410CryptoServiceProvider gost = new Gost3410CryptoServiceProvider(csp);
Если вытаскивать сертификат с eToken'а, то все нормально. Отличие в сертификатах: на Магистре просроченный сертификат, на eToken'е действующий.
Пробовал вытаскивать действующий сертификат с Магистры - все в норме...
как можно решить эту проблему?

Отредактировано пользователем 15 апреля 2011 г. 20:42:52(UTC)  | Причина: Не указана

Offline Челпанов А.  
#2 Оставлено : 22 апреля 2011 г. 15:25:58(UTC)
Челпанов А.

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

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

Поблагодарили: 2 раз в 2 постах
Извините за задержку с ответом, был в отпуске.
Проблема не в просроченности... Сроки действия ключа при извлечении из контейнера не проверяются
Скорее всего на Магистре ключ подписи, а на eToken ключ шифрования. По умолчанию открывается в контейнере ключ шифрования.
С уважением, Александр.
Offline klvking  
#3 Оставлено : 27 апреля 2011 г. 16:02:10(UTC)
klvking

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

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

Пробовал следующее:
Цитата:
CspParameters csp = new CspParameters();
csp.ProviderType = 75;
csp.KeyContainerName = Gost3410CryptoServiceProvider.SelectContainer(true, false, IntPtr.Zero);
csp.KeyNumber = (int)KeyNumber.Signature; //(int)KeyNumber.Exchange;
Gost3410CryptoServiceProvider gost = new Gost3410CryptoServiceProvider(csp);
return gost.ContainerCertificate;

Видимо причина не в этом. Попробовал на этом же ключе (Рутокен-Магистра) сгенерить тестовые ключи (http://www.cryptopro.ru/certsrv/) и записать сертификат - вышеуказанным кодом сертификат из контейнера считывается...
Поэтому причина, я думаю, в отличиях в сертификатах. Знать бы что именно не нравится... Пробовал просматривать сертификаты через интерфейс КриптоПро 3.0 - отличия в сертификатах нашел в следующем:
1. Количество точек распределения списка отзыва (CRL) (в несчитываемом 3, в считываемом 1)
2. Использование ключа:
- в несчитываемом - Проверка подлинности клиента (1.3.6.1.5.5.7.3.2) Защищенная электронная почта (1.3.6.1.5.5.7.3.4)Пользователь Центра Регистрации, HTTP, TLS клиент (1.2.643.2.2.34.6)
- в считываемом - Защищенная электронная почта (1.3.6.1.5.5.7.3.4)

Вроде все отличия...
Offline Челпанов А.  
#4 Оставлено : 27 апреля 2011 г. 18:17:33(UTC)
Челпанов А.

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

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

Поблагодарили: 2 раз в 2 постах
CSP сертификат да же не разбирает, .Net Framework разбирает, но не проверяет. Проблема не в содержимом сертификатов.
А Stack Trace на ошибку "Неправильный параметр набора ключей" можно увидеть?
С уважением, Александр.
Offline klvking  
#5 Оставлено : 27 апреля 2011 г. 19:22:28(UTC)
klvking

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

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

в CryptoPro.Sharpei.CPUtils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
в CryptoPro.Sharpei.CPUtils.GetKeyPairHelper(CPCspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandleCP& safeProvHandle, SafeKeyHandleCP& safeKeyHandle)
в CryptoPro.Sharpei.Gost3410CryptoServiceProvider.GetKeyPair()
в CryptoPro.Sharpei.Gost3410CryptoServiceProvider..ctor(CspParameters parameters)
Offline Челпанов А.  
#6 Оставлено : 28 апреля 2011 г. 13:11:36(UTC)
Челпанов А.

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

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

Поблагодарили: 2 раз в 2 постах
1. Эксперименты с Магистра и etoken проводите на одном компьютере?
2. Через контрольную панель CSP сертификаты на обоих контейнерах видны (Сервис/Просмотреть сертификаты в контейнере) и на обох контейнерах ключи exchange (Сервис/Протестировать)?
3. На обоих контейнерах есть пароли?
4. У Вас установлен CSP 3.6.1 или CSP/ФКН?
С уважением, Александр.
Offline klvking  
#7 Оставлено : 28 апреля 2011 г. 15:18:11(UTC)
klvking

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

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

1. тестировал ПО на 2-х ПК.
2. Сертификаты в обоих случаях видны. Используется Крипто Про 3.0.3300.3, поэтому Сервис/Протестировать отсутствует.
3. Пароли есть в обоих случаях.

Попробовать установить 3.6? Просто на АРМах, на которых надо будет использовать ПО, стоит Крипто Про 3.0 (лицензия), поэтому хотелось бы в рамках 3.0 добить...
Offline Челпанов А.  
#8 Оставлено : 28 апреля 2011 г. 15:41:57(UTC)
Челпанов А.

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

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

Поблагодарили: 2 раз в 2 постах
Цитата:
1. тестировал ПО на 2-х ПК.

Скорее всего проблема именно в различиях установки CSP или Sharpei.
Переустанавливать CSP пока не надо.
Киньте osinfo.xml (http://www.cryptopro.ru/forum2/Default.aspx?g=posts&t=2930) на support@cryptopro.ru с проблемной машины.
С уважением, Александр.
Offline klvking  
#9 Оставлено : 28 апреля 2011 г. 17:13:35(UTC)
klvking

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

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

osinfo.xml отправил.
Похоже криво sharpei встал.
Цитата:
CryptoPro.Sharpei.Start.dll not loaded. Error code:126 (0x7e):Не найден указанный модуль
Offline Челпанов А.  
#10 Оставлено : 28 апреля 2011 г. 17:41:04(UTC)
Челпанов А.

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

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

Поблагодарили: 2 раз в 2 постах
Цитата:
CryptoPro.Sharpei.Start.dll not loaded. Error code:126 (0x7e):Не найден указанный модуль

Это не ошибка, если есть одна из строчек
Цитата:
module name="CryptoPro.Sharpei.Start20.dll"
module name="CryptoPro.Sharpei.Start40.dll"
С уважением, Александр.
Offline Челпанов А.  
#11 Оставлено : 29 апреля 2011 г. 15:29:11(UTC)
Челпанов А.

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

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

Поблагодарили: 2 раз в 2 постах
В результате внутренней переписки, которую я приводить здесь не буду, была найдена проблема.
В CSP есть ограничение на размер имени контейнера.
В CSP 2.0 и 3.0 имя ограничено 64 символами.
В CSP 3.6 имя ограничено 128 символами.
При открытии контейнера по FQCN имени оно делится на следующие части
- префикс "\\.\"
- имя считывателя, например "OMNIKEY CardMan 5x21 0"
- разделитель "\"
- имя контейнера, например "7bdc6307-4453-4287-9c32-d9968ef51378"
Обычно размер имени контейнера не превышает 36 символов. Размер имени считывателя для не смарт считывателей, обычно не превышает 22 символов.
Размер приведенного выше имени составляет ровно 64 символа. Поэтому имя считывателя или имя контейнера большего размера приведет к ошибке в CSP 2.0 или 3.0.

Возможные варианты устанения:

1. Не указывать флаг FQCN при выводе окна выбора контейнера
Код:
Gost3410CryptoServiceProvider.SelectContainer(false, false, IntPtr.Zero);

При наличии двух считывателей поиск контейнера в момент его открытия может привести к дополнительному опросу второго считывателя и накрты в нем.
2. Переименовывать имя считывателя смарт карт в реестре (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\Readers\ИМЯ) на более короткое. При переименовании следует перерегистрировать считыватель в CSP.

Можно так же использовать сочетания этих двух методов, например
Код:
Gost3410CryptoServiceProvider.SelectContainer(true, false, IntPtr.Zero);

если, результирующее имя не превышает 64 символов открывать контейнер по FQCN.
При превышении вырезать имя считывателя (оно не может содержать \\) и открывать по обычному имени (или просить переименовать считыватель).
С уважением, Александр.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.