2017-01-13 7 views
0

Я получаю следующее сообщение об ошибке на линии № 4 кода ниже в IBM Websphere Liberty профиль 16.0.0UnrecoverableKeyException при попытке прочитать ключ, используя псевдоним из хранилища ключей

InputStream keystoreStream = EncryptionUtility.class.getResourceAsStream(keyStoreLocation);   
KeyStore keystore = KeyStore.getInstance("JCEKS"); 
keystore.load(keystoreStream, storePass.toCharArray()); 
Key key = keystore.getKey(alias, keyPass.toCharArray()); 

что приводит к следующим исключением:

Caused by: java.security.UnrecoverableKeyException: com.ibm.crypto.provider.AESSecretKey 
at com.sun.crypto.provider.KeyProtector.unseal(KeyProtector.java:358) 
at com.sun.crypto.provider.JceKeyStore.engineGetKey(JceKeyStore.java:133) 
at java.security.KeyStore.getKey(KeyStore.java:804) 
at com.comdata.base.helper.EncryptionUtility.initSymmetricKey(EncryptionUtility.java:134) 

Любые идеи, почему это происходит? Что-то нужно настроить для криптографии?

Я ткнул через код keyProtector.java в JDK 7 и UnrecoverableKeyException запускается ClassNotFoundException com.ibm.crypto.provider.AESSecretKey

нам нужно установить любую функцию через installUtility ли?

ответ

0

Любые идеи, почему это происходит? Что-то нужно настроить для криптографии?

Класс не найден (com.ibm.crypto.provider.AESSecretKey) от IBM JDK.

Похоже, ваше хранилище ключей было создано с использованием IBM JDK и, таким образом, имеет в нем ключ, который использует AESSecretKey от IBM JDK.

Во время выполнения ваш сервер Liberty, вероятно, использует не-IBM JDK, у которого не будет этого специфического класса IBM JDK.

Нужно ли устанавливать какие-либо функции с помощью installUtility?

Nope. Недопустимый класс должен предоставляться JDK, в отличие от функции Liberty.

+0

большой! после использования ibm jdk инициализация криптового модуля прошла успешно! – Balaji