У меня есть Java KeyStore (JKS), и мне нужно прочитать его с BouncyCastle.Читать JKS с BouncyCastle
Я добавил BC
поставщика в верхней части списка провайдеров:
Security.insertProviderAt(new BouncyCastleProvider(), 1);
Если я создаю KeyStore так:
final KeyStore keystore = KeyStore.getInstance("JKS", "BC");
Я получаю сообщение об ошибке:
java.security.KeyStoreException: JKS not found
Если я не укажу поставщика, KeyStore будет создан с помощью провайдера и keystore.aliases()
будет содержать EmptyEnumeration
.
Как я видел в this теме, BouncyCastle может работать с JKS
Как я могу прочитать JKS с BouncyCastle?
Вы добавили следующую строку вверху вашей программы: 'Security.addProvider (новый BouncyCastleProvider());'? См. [Раздел 6.0] (https://www.bouncycastle.org/specifications.html). –
@ Mr.Polywhirl Да. Я отредактировал описание – Kirill
Вы путаете «работать с» и «внедрять». Обычно вы не должны указывать поставщика в любом из методов 'getInstance()' JCE. Просто добавьте поставщика с 'Security.addProvider()' и пусть JCE найдет реализации от любого поставщика. Только поставщики Oracle реализуют хранилище ключей JKS, но ваш «KeyStore.getInstance» («JKS», «BC»); «заставляет JCE смотреть только на BouncyCastle для реализации JKS, которого у него нет. Кроме того, не добавляйте поставщика BouncyCastle в определенную позицию, если вы действительно не знаете, что делаете. –