Я расшифровываю файл p7m через API BouncyCastle, поддержанный Luna HSM.В одном экземпляре все работает как чудо. Если я разверну один и тот же код в Jboss в доменном режиме или на двух отдельных узлах, я получу следующее: «LunaException: Невозможно ввести ключ» и функция «C_UnwrapKey» возвращает 0x110 для key = xxxxxxx"
Обратите внимание, что дескриптор ключа не существует в hsm
. Я пытался использовать LunaProvider.jar как глобальный системный модуль, чтобы избежать проблем загрузчика классов, а также пыталсябез. Клиент настроен правильно. Если я запускаю приложение с двумя экземплярами загрузки на двух физических узлах по отдельности, все работает. Запуск в автономном Tomcat также работает
CMSEnvelopedData envelopedData = new CMSEnvelopedData(encEnvelopedData);
log.info("get recipient infos");
RecipientInformationStore recipients = envelopedData.getRecipientInfos();
log.info("get recipients size:{}",recipients==null?"null":recipients.size());
//avoid assigning keys to java attributes since the operations are on the hsm
RecipientInformation recipient = recipients.get(new JceKeyTransRecipientId((java.security.cert.X509Certificate)jcaProvider.getKeystore().getCertificate(alias)));
if (recipient != null) {
JceKeyTransEnvelopedRecipient trans=new JceKeyTransEnvelopedRecipient((PrivateKey)jcaProvider.getKeystore().getKey(alias,jcaProvider.getPwd().toCharArray()));
trans.setProvider("LunaProvider");
CMSTypedStream cmsTs= recipient.getContentStream(trans);
return cmsTs.getContentStream();