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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline mikla  
#1 Оставлено : 11 сентября 2015 г. 10:52:53(UTC)
mikla

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

Группы: Участники
Зарегистрирован: 27.08.2015(UTC)
Сообщений: 33
Беларусь

Сказал(а) «Спасибо»: 23 раз
Генерирую ключи с использованием JCSP провайдера.

Код:

  val kg = KeyPairGenerator.getInstance(JCP.GOST_EL_DEGREE_NAME, JCSP.PROVIDER_NAME)
  val keypair = kg.genKeyPair()


генерирую самоподписанный сертификат

Код:

  def genSelfCert(pair: KeyPair, dname: String) = {
    val gr: GostCertificateRequest = new GostCertificateRequest(JCSP.PROVIDER_NAME)
    val enc: Array[Byte] = gr.getEncodedSelfCert(pair, dname)
    val cf: CertificateFactory = CertificateFactory.getInstance("X509")
    cf.generateCertificate(new ByteArrayInputStream(enc))
  }

  val certs: Array[Certificate] = new Array[Certificate](1)
  certs(0) = genSelfCert(keypair, "CN=Container_A, O=CryptoPro, C=RU")


Пытаемся сохранить это все в хранилище (HDImageStore)

Код:

   val ks = KeyStore.getInstance("HDImageStore")
   ks.load(null, keystorePass.toCharArray)

   keystore.setKeyEntry("alias", keypair.getPrivate, keystorePass.toCharArray, certs)
   keystore.store(null, keystorePass.toCharArray)


Получаю ошибку:
Код:

   java.security.KeyStoreException: key is not GostPrivateKey or GostExchPrivateKey


Если переключиться на JCP провайдер - то сохраняет все ок, но этот вариант не подходит, ибо для генерации ключей используем внешнюю гамму.

Как быть?
Offline Евгений Афанасьев  
#2 Оставлено : 11 сентября 2015 г. 11:11:39(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,005
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Потому что тип хранилища у вас HDImageStore, а это тип для JCP, реализуется этим провайдером. Чтобы сохранить ключ, сгенерированный JCSP, надо использовать тип HDIMAGE, например - это аналог HDImageStore. Выглядит это примерно так:
Код:

KeyStore ks = KeyStore.getInstance(JCSP.HD_STORE_NAME);
ks.load(null, null);
keystore.setKeyEntry("alias", keypair.getPrivate, keystorePass.toCharArray, certs);

Лучше использовать константы, прописанные в классе JCSP. Об этом более подробно есть в документации к JCSP.

Отредактировано пользователем 11 сентября 2015 г. 11:18:01(UTC)  | Причина: Исправил тип хранилища

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
mikla оставлено 11.09.2015(UTC)
Offline mikla  
#3 Оставлено : 11 сентября 2015 г. 11:35:04(UTC)
mikla

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

Группы: Участники
Зарегистрирован: 27.08.2015(UTC)
Сообщений: 33
Беларусь

Сказал(а) «Спасибо»: 23 раз
Автор: afev Перейти к цитате
Потому что тип хранилища у вас HDImageStore, а это тип для JCP, реализуется этим провайдером. Чтобы сохранить ключ, сгенерированный JCSP, надо использовать тип HDIMAGE, например - это аналог HDImageStore. Выглядит это примерно так:
Код:

KeyStore ks = KeyStore.getInstance(JCSP.HD_STORE_NAME);
ks.load(null, null);
keystore.setKeyEntry("alias", keypair.getPrivate, keystorePass.toCharArray, certs);

Лучше использовать константы, прописанные в классе JCSP. Об этом более подробно есть в документации к JCSP.


Нет такой константы в моей версии. (jcp-2.0.37985)
Offline Евгений Афанасьев  
#4 Оставлено : 11 сентября 2015 г. 12:19:26(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,005
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Должна быть - JCSP.HD_STORE_NAME. Я исправлял константу в посте выше, т.к. записал неверно. Еще раз говорю - смотрите документацию. Там все есть.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
mikla оставлено 11.09.2015(UTC)
Offline mikla  
#5 Оставлено : 11 сентября 2015 г. 12:30:45(UTC)
mikla

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

Группы: Участники
Зарегистрирован: 27.08.2015(UTC)
Сообщений: 33
Беларусь

Сказал(а) «Спасибо»: 23 раз
Автор: afev Перейти к цитате
Должна быть - JCSP.HD_STORE_NAME. Я исправлял константу в посте выше, т.к. записал неверно. Еще раз говорю - смотрите документацию. Там все есть.


Я вообще ни в одной документации не могу найти упоминание этих констант.
Буду крайне признателен, если укажите куда смотреть :)

в моем распоряжении доки:

ЖТЯИ.00087-01 90 03-02. Инструкция по использованию.pdf
ЖТЯИ.00087-01 90 09. Руководство администратора безопасности.pdf
ЖТЯИ.00087-01 90 09. Руководство программиста.pdf
ЖТЯИ.00087-01 90 09. Руководство программиста (JTLS).pdf
Offline Евгений Афанасьев  
#6 Оставлено : 11 сентября 2015 г. 13:44:33(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,005
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Папка Doc\ЖТЯИ.00087-01-JCSP в дистрибутиве, файл "ЖТЯИ.00087-01 90 09. Руководство программиста.pdf", например, "Работа с ключевыми носителями".
Offline mikla  
#7 Оставлено : 11 сентября 2015 г. 15:20:13(UTC)
mikla

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

Группы: Участники
Зарегистрирован: 27.08.2015(UTC)
Сообщений: 33
Беларусь

Сказал(а) «Спасибо»: 23 раз
Автор: afev Перейти к цитате
Папка Doc\ЖТЯИ.00087-01-JCSP в дистрибутиве, файл "ЖТЯИ.00087-01 90 09. Руководство программиста.pdf", например, "Работа с ключевыми носителями".


Да, но там речь о JCP, о JCSP ни слова.
Offline Евгений Афанасьев  
#8 Оставлено : 11 сентября 2015 г. 15:32:17(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,005
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Папка Doc\ЖТЯИ.00087-01-JCSP в дистрибутиве, файл "ЖТЯИ.00087-01 90 09. Руководство программиста.pdf", например, "Работа с ключевыми носителями".

Код:

KeyPairGenerator kg = KeyPairGenerator.getInstance("GOST3410EL", "JCSP");
KeyPairGenerator kg = KeyPairGenerator.getInstance(JCP.GOST_EL_DEGREE_NAME,
JCSP.PROVIDER_NAME);


Код:

Таким образом, определение типа используемого ключевого носителя осуществляется
одним из следующих способов:
KeyStore ks = KeyStore.getInstance("HDIMAGE", "JCSP");
KeyStore ks = KeyStore.getInstance("REGISTRY", "JCSP");


Здесь разве нет упоминания JCSP? Что мешает нажать Ctrl + Space после ввода "JCSP.".

Отредактировано пользователем 11 сентября 2015 г. 15:34:06(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
mikla оставлено 11.09.2015(UTC)
Offline mikla  
#9 Оставлено : 11 сентября 2015 г. 15:38:52(UTC)
mikla

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

Группы: Участники
Зарегистрирован: 27.08.2015(UTC)
Сообщений: 33
Беларусь

Сказал(а) «Спасибо»: 23 раз
Автор: afev Перейти к цитате
Папка Doc\ЖТЯИ.00087-01-JCSP в дистрибутиве, файл "ЖТЯИ.00087-01 90 09. Руководство программиста.pdf", например, "Работа с ключевыми носителями".

Код:

KeyPairGenerator kg = KeyPairGenerator.getInstance("GOST3410EL", "JCSP");
KeyPairGenerator kg = KeyPairGenerator.getInstance(JCP.GOST_EL_DEGREE_NAME,
JCSP.PROVIDER_NAME);


Код:

Таким образом, определение типа используемого ключевого носителя осуществляется
одним из следующих способов:
KeyStore ks = KeyStore.getInstance("HDIMAGE", "JCSP");
KeyStore ks = KeyStore.getInstance("REGISTRY", "JCSP");


Здесь разве нет упоминания JCSP? Что мешает нажать Ctrl + Space после ввода "JCSP.".


Код:

no such algorithm: HDIMAGE for provider JCSP
Offline Евгений Афанасьев  
#10 Оставлено : 11 сентября 2015 г. 15:42:41(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,005
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Крипто-Про CSP установлен? Если у вас Windows, то используйте "REGISTRY" (JCSP.REG_STORE_NAME), т.к. в windows нет HDIMAGE.

P.S. Если запустите панель JCP, на закладке "Алгоритмы" выберете провайдер по умолчанию "Java CSP" и перезапустите панель, то потом увидите на закладке "Хранилища ключей и сертификатов" список имеющихся типов. Об этом тоже есть в документации, в руководстве администратора.

Отредактировано пользователем 11 сентября 2015 г. 15:44:46(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
mikla оставлено 22.03.2016(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.