logo
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline rushchel  
#1 Оставлено : 13 июня 2018 г. 6:41:32(UTC)
rushchel

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

Группы: Участники
Зарегистрирован: 13.06.2018(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 2 раз
Добрый день!

Имеется веб-сервис, собранный с помощью КриптоПро .NET SDK v1.0.6397
Реализация подписи:
Код:
public override byte[] MakeSign(byte[] data, X509Certificate2 cert, SecureString password, string hashAlg)
{
  byte[] baSign = null;
  try
  {
    CspKeyContainerInfo info = ((ICspAsymmetricAlgorithm)cert.PrivateKey).CspKeyContainerInfo;
    CspParameters cp = new CspParameters();
    cp.KeyContainerName = info.KeyContainerName;
    cp.ProviderType = 80;
    cp.Flags = CspProviderFlags.UseExistingKey | CspProviderFlags.UseMachineKeyStore | CspProviderFlags.NoPrompt;
    cp.KeyPassword = password;
    Gost3410_2012_256CryptoServiceProvider.UseMachineKeyStore = true;
    using (Gost3410_2012_256CryptoServiceProvider csp = new Gost3410_2012_256CryptoServiceProvider(cp))
    {
      Gost3411_2012_256CryptoServiceProvider Hash = new Gost3411_2012_256CryptoServiceProvider();
      baSign = csp.SignData(data, Hash);
    }
  }
  catch (CryptographicException e)
  {
    Logger.log.loggingExceptionInformation("Ошибка подписания с помощью CryptoPro", e);
  }
  catch (Exception e)
  {
    Logger.log.loggingExceptionInformation("Общая ошибка работы с крипто провайдером CryptoPro", e);
  }
  return baSign;
}


Описание сервера:
- MS Windows Server 2012 R2 Standard 64-bit
- IIS v8.5.9600
- CryptoPro .NET Server v1.0.6397
- CryptoPro CSP v4.0.9842

Для тестов создавал контейнер и самоподписанный сертификат с помощью утилиты csptest.exe
Код:
>csptest.exe -keyset -newkeyset -machinekeyset -makecert -container gost2012

Права для пользователя IIS на сертификат выданы.
При вызове подписи сообщения возникает исключение:
Код:
<message>
  <type>
    System.Security.Cryptography.CryptographicException
  </type>
  <description>
    <![CDATA[
      The specified cryptographic service provider (CSP) does not support this key algorithm.
    ]]>
  </description>
  <source>
    <![CDATA[
      CryptoPro.Sharpei.Base
    ]]>
  </source>
  <number>
    -1
  </number>
  <stacktrace>
    <![CDATA[
         at CryptoPro.Sharpei.CPUtils.GetKeyPairHelper(CPCspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandleCP& safeProvHandle, SafeKeyHandleCP& safeKeyHandle)
at CryptoPro.Sharpei.Gost3410_2012_256CryptoServiceProvider.GetKeyPair()
at CryptoPro.Sharpei.Gost3410_2012_256CryptoServiceProvider..ctor(CspParameters parameters)
at CC.ProviderGost3410_2012_256.MakeSign(Byte[] data, X509Certificate2 cert, SecureString password, String hashAlg)
    ]]>
  </stacktrace>
</message>


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

Отредактировано пользователем 13 июня 2018 г. 7:51:20(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#2 Оставлено : 13 июня 2018 г. 7:50:16(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 11 раз
Поблагодарили: 472 раз в 431 постах
Знания в базе знаний, поддержка в техподдержке
Offline rushchel  
#3 Оставлено : 13 июня 2018 г. 8:12:43(UTC)
rushchel

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

Группы: Участники
Зарегистрирован: 13.06.2018(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 2 раз
Автор: Максим Коллегин Перейти к цитате


Переустановил КриптоПро .NET, перезагрузил. Ошибка осталась та же.
Может нужны еще детали от меня?
Offline Максим Коллегин  
#4 Оставлено : 13 июня 2018 г. 8:48:51(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 11 раз
Поблагодарили: 472 раз в 431 постах
Что-то у меня нет уверенности, что -makecert сделает ключ 2012 криптопровайдера. Сделайте лучше на нашем тестовом центре: http://www.cryptopro.ru/certsrv
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
rushchel оставлено 13.06.2018(UTC)
Offline rushchel  
#5 Оставлено : 13 июня 2018 г. 10:53:57(UTC)
rushchel

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

Группы: Участники
Зарегистрирован: 13.06.2018(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 2 раз
Автор: Максим Коллегин Перейти к цитате
Что-то у меня нет уверенности, что -makecert сделает ключ 2012 криптопровайдера. Сделайте лучше на нашем тестовом центре: http://www.cryptopro.ru/certsrv


Блин, спасибо! Заработало после генерации сертификата на вашем тестовом центре.
Скажите, а планируется добавлять -makecert для 2012?
Offline Максим Коллегин  
#6 Оставлено : 13 июня 2018 г. 15:17:14(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 11 раз
Поблагодарили: 472 раз в 431 постах
Нужно было указать тип при генерации -provtype 80
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
rushchel оставлено 13.06.2018(UTC)
Offline rushchel  
#7 Оставлено : 13 июня 2018 г. 16:07:23(UTC)
rushchel

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

Группы: Участники
Зарегистрирован: 13.06.2018(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 2 раз
Автор: Максим Коллегин Перейти к цитате
Нужно было указать тип при генерации -provtype 80


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