Статус: Участник
Группы: Участники
Зарегистрирован: 16.03.2021(UTC) Сообщений: 18 Сказал(а) «Спасибо»: 9 раз
|
Есть два приложения:
1) Консольное(тестовое) приложение, где только КриптоПРО есть 2) Рабочее приложение(WildFly 8.21), в котором где-то как-то используется BC
При попытке отправки данных на первом приложении всё в порядке.
На втором во время отправки возникает ошибка java.security.cert.CertificateException: Invalid public key algorithm ECGOST3410-2012 in the certificate.
Как я понял КриптоПРО ожидает GOST3410-2012, а ECGOST3410-2012 чисто штука BC. Как отключить в коде BC, чтобы остался только КриптоПРО? Пробовал
Код:Security.removeProvider("BC");
не помогло. Заранее спасибо.
Версия JCP 2.0.41789
Отредактировано пользователем 22 апреля 2021 г. 12:48:30(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,926 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Здравствуйте. Может, у вас где-то перестраивается список провайдеров с помощью Security.addProvider и в итоге BC может оказаться наверху? Вряд ли WildFly будет использовать Security.insertProviderAt, чтобы вынести BC вперед, обычно используется Security.addProvider для добавления в конец списка. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.03.2021(UTC) Сообщений: 18 Сказал(а) «Спасибо»: 9 раз
|
Автор: Евгений Афанасьев Здравствуйте. Может, у вас где-то перестраивается список провайдеров с помощью Security.addProvider и в итоге BC может оказаться наверху? Вряд ли WildFly будет использовать Security.insertProviderAt, чтобы вынести BC вперед, обычно используется Security.addProvider для добавления в конец списка. Здравствуйте, судя по списку напечатанному с помощью
Код:try {
Provider[] providers = Security.getProviders();
for (Provider provider : providers) {
System.out.println(provider);
for (Object key : provider.keySet())
System.out.println("\t" + key);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
BC не в начале списка. Или вы имеете ввиду, что JCP оказывается после BC?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,926 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Да. Маловероятно, что wildfly перестраивает список или добавляет bc в начало. Скорее, где-то в вашем коде происходит удаление/добавление jcp, в результате чего bc оказывается сверху (главнее), над jcp. Отредактировано пользователем 23 апреля 2021 г. 9:32:11(UTC)
| Причина: Не указана |
|
1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
long76 оставлено 23.04.2021(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.03.2021(UTC) Сообщений: 18 Сказал(а) «Спасибо»: 9 раз
|
Автор: Евгений Афанасьев Да. Маловероятно, что wildfly перестраивает список или добавляет bc в начало. Скорее, где-то в вашем коде происходит удаление/добавление jcp, в результате чего bc оказывается сверху (главнее), над jcp. здравствуйте, в процессе логирования выяснилось что в проект сертификаты парсятся с ключом в формате Код: Key: ECGOST3410-2012 Public Key [f4:88:08:c8:82:34:ca:44:ce:23:0c:01:34:1d:30:49:01:31:83:b7]
X: d7b4272141e41b213322851aebc36f094de07fd6b8ba71ce3dc78c76e4aa8c39
Y: fb0616a19cbbe14329877ad3ee3f3e80cb1982cb27df4b8d21545f71b72d7282
а должно быть Код:Key: ru.CryptoPro.JCP.Key.GostPublicKey
можно ли как-то указать как обрабатывать ключи в сертификате?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,926 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
1. Кем парсятся (в вашем коде или внутри wildlfy)? Обычно это место вроде KeyFactory keyFactory = KeyFactory.getInstance(...); PublicKey pk = keyFactory.generatePublic(...). 2. KeyFactory.getInstance без указания имени провайдера вторым аргументом приведет к тому, что будет выбрана реализация, умеющая работать с открытыми ГОСТ ключами того провайдера, который выше в списке провайдеров. И, видимо, им оказывается BC. Если п.1 выполняется в вашем коде, то вторым параметром KeyFactory.getInstance(...) можно прописать JCP.PROVIDER_NAME. |
|
1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
long76 оставлено 04.08.2021(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.03.2021(UTC) Сообщений: 18 Сказал(а) «Спасибо»: 9 раз
|
Автор: Евгений Афанасьев 1. Кем парсятся (в вашем коде или внутри wildlfy)? Обычно это место вроде KeyFactory keyFactory = KeyFactory.getInstance(...); PublicKey pk = keyFactory.generatePublic(...). 2. KeyFactory.getInstance без указания имени провайдера вторым аргументом приведет к тому, что будет выбрана реализация, умеющая работать с открытыми ГОСТ ключами того провайдера, который выше в списке провайдеров. И, видимо, им оказывается BC. Если п.1 выполняется в вашем коде, то вторым параметром KeyFactory.getInstance(...) можно прописать JCP.PROVIDER_NAME. к сожалению пока не нашел такого места, но появился вопрос почему в криптопро нет CertificateFactory? можно было бы динамически загрузить сертификат с нужным PublicKey и добавить его в KeyStore.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,926 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Пока необходимости в CertificateFactory не было. Для CertificateFactory аналогично KeyFactory нужно было бы указывать провайдер, если требуется специфическая factory. |
|
1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
long76 оставлено 04.08.2021(UTC)
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,926 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Можете полный стек ошибки приложить? |
|
1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
long76 оставлено 05.08.2021(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.03.2021(UTC) Сообщений: 18 Сказал(а) «Спасибо»: 9 раз
|
Автор: Евгений Афанасьев Можете полный стек ошибки приложить? crypto.log (70kb) загружен 2 раз(а).
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close