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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline akrtkv  
#1 Оставлено : 23 апреля 2020 г. 11:38:46(UTC)
akrtkv

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

Группы: Участники
Зарегистрирован: 20.04.2020(UTC)
Сообщений: 14
Российская Федерация

Нужны ли какие-то особые настройки для работы jcsp на сервере? Wildfly 19 кидает ошибку в примере на 3 строчке. Код из samples/xmlSign/CryptXml.
Код:
if (x509Certificate.getPublicKey().getAlgorithm().equals(GOST_EL_2012_256_NAME) || x509Certificate.getPublicKey().getAlgorithm().equals(GOST_EL_2012_512_NAME)) {
    cryptParamsSpec = CryptParamsSpec.getInstance(CryptParamsSpec.Rosstandart_TC26_Z);
    keyGenerator.init(cryptParamsSpec); // ошибка java.security.InvalidAlgorithmParameterException: Unable create session key with specified parameters
}

java-csp-5.0.40714 + java 8 (liberica jdk)
Offline Евгений Афанасьев  
#2 Оставлено : 23 апреля 2020 г. 13:29:56(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Здравствуйте.
Можете показать keyGenerator?
Весь стек ошибки?
Offline akrtkv  
#3 Оставлено : 23 апреля 2020 г. 13:40:21(UTC)
akrtkv

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

Группы: Участники
Зарегистрирован: 20.04.2020(UTC)
Сообщений: 14
Российская Федерация

Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
Можете показать keyGenerator?
Весь стек ошибки?


Код:
        // Создание случайного сессионного ключа
        final KeyGenerator keyGenerator = KeyGenerator.getInstance("GOST28147");
        CryptParamsSpec cryptParamsSpec = null;
        if (x509Certificate.getPublicKey().getAlgorithm().equals(GOST_EL_2012_256_NAME) || x509Certificate.getPublicKey().getAlgorithm().equals(GOST_EL_2012_512_NAME)) {
            cryptParamsSpec = CryptParamsSpec.getInstance(CryptParamsSpec.Rosstandart_TC26_Z);
            keyGenerator.init(cryptParamsSpec);
        }
        final SecretKey secretKey = keyGenerator.generateKey();

Ошибка:

Отредактировано пользователем 23 апреля 2020 г. 13:46:01(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#4 Оставлено : 23 апреля 2020 г. 17:46:03(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Здравствуйте.
Ошибка не должна возникать.
Может, у вас разные экземпляры классов загружены разными class loader'ами (несколько одинаковых jar)?
Offline akrtkv  
#5 Оставлено : 23 апреля 2020 г. 17:59:18(UTC)
akrtkv

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

Группы: Участники
Зарегистрирован: 20.04.2020(UTC)
Сообщений: 14
Российская Федерация

Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
Ошибка не должна возникать.
Может, у вас разные экземпляры классов загружены разными class loader'ами (несколько одинаковых jar)?

Какие классы вы имеете ввиду? KeyGenerator, CryptParamsSpec?

Offline Евгений Афанасьев  
#6 Оставлено : 23 апреля 2020 г. 18:30:16(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Да.
KeyGenerator, CryptParamsSpec, CryptParamsInterface, AlgIdInterface - не вышло случайно так, что у вас несколько экземпляров JCP задействовано, в приложении и в lib/ext, например.
В генераторах имеются проверки вида instanceof на соответствие параметров.
Я бы еще рекомендовал у *Generator указывать все-таки конкретный провайдер (JCSP.PROVIDER_NAME в случае JCSP, CryptoProvider.PROIDER_NAME в случае JCryptoP), допусим:
Код:

final KeyGenerator keyGenerator = KeyGenerator.getInstance("GOST28147", JCSP.PROVIDER_NAME); // если JCSP

Отредактировано пользователем 23 апреля 2020 г. 18:31:19(UTC)  | Причина: Не указана

Offline akrtkv  
#7 Оставлено : 24 апреля 2020 г. 8:47:02(UTC)
akrtkv

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

Группы: Участники
Зарегистрирован: 20.04.2020(UTC)
Сообщений: 14
Российская Федерация

Автор: Евгений Афанасьев Перейти к цитате
Да.
KeyGenerator, CryptParamsSpec, CryptParamsInterface, AlgIdInterface - не вышло случайно так, что у вас несколько экземпляров JCP задействовано, в приложении и в lib/ext, например.
В генераторах имеются проверки вида instanceof на соответствие параметров.
Я бы еще рекомендовал у *Generator указывать все-таки конкретный провайдер (JCSP.PROVIDER_NAME в случае JCSP, CryptoProvider.PROIDER_NAME в случае JCryptoP), допусим:
Код:

final KeyGenerator keyGenerator = KeyGenerator.getInstance("GOST28147", JCSP.PROVIDER_NAME); // если JCSP


Нет, несколько экземпляров нигде нет. Все что я сделал: установил jcp-2.0.40035, java-csp-5.0.40714, crypto pro csp, добавил в gradle implementation fileTree(include: ['*.jar'], dir: 'C:\\Program Files\\BellSoft\\LibericaJDK-8\\jre\\lib\\ext'), чтобы собрать проект (туда же в jre\lib\ext положил xmlSec), wildFly java.home на этой же jdk.
Вот код:


Интересно что на клиенте этот код работает.

Отредактировано пользователем 24 апреля 2020 г. 9:48:46(UTC)  | Причина: Дополнение.

Offline Евгений Афанасьев  
#8 Оставлено : 24 апреля 2020 г. 15:37:05(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Автор: akrtkv Перейти к цитате
установил jcp-2.0.40035, java-csp-5.0.40714

Как вы установили 2 дистрибутива? Первый jcp, второй - jcsp с jcp внутри. В зависимости от того, что вам нужно, надо поставить либо первый (jcp, если нужен jcp), либо второй (jcsp, если нужен jcsp). Так как в составе jcsp есть jcp, то, если вам нужен jcp, можно его, в принципе, поставить и из jcsp-дистрибутива (не ставя jcsp).

Offline akrtkv  
#9 Оставлено : 24 апреля 2020 г. 16:53:30(UTC)
akrtkv

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

Группы: Участники
Зарегистрирован: 20.04.2020(UTC)
Сообщений: 14
Российская Федерация

Автор: Евгений Афанасьев Перейти к цитате
Автор: akrtkv Перейти к цитате
установил jcp-2.0.40035, java-csp-5.0.40714

Как вы установили 2 дистрибутива? Первый jcp, второй - jcsp с jcp внутри. В зависимости от того, что вам нужно, надо поставить либо первый (jcp, если нужен jcp), либо второй (jcsp, если нужен jcsp). Так как в составе jcsp есть jcp, то, если вам нужен jcp, можно его, в принципе, поставить и из jcsp-дистрибутива (не ставя jcsp).


Да, я извиняюсь, ставил java-csp-5.0.40714 и Crypto Pro 5.0.11455. Есть какие-то еще варианты решения?

Offline akrtkv  
#10 Оставлено : 13 мая 2020 г. 13:06:35(UTC)
akrtkv

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

Группы: Участники
Зарегистрирован: 20.04.2020(UTC)
Сообщений: 14
Российская Федерация

Здравствуйте! Получилось настроить сервер, чтобы он брал зависимости из jre\lib\ext добавлением в проект jboss-deployment-structure.xml


Но падает на EncryptedKey encryptedKey = keyCipher.encryptKey(doc, sessionKey); ERROR: java.security.InvalidKeyException: Invalid key type.

Пример кода:

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