BouncyCastle的1.51装载在战争Wildfly 8.0
背景BouncyCastle的1.51装载在战争Wildfly 8.0
我想使用充气城堡库在我的战争解密私钥。现在我先在独立应用程序中测试代码,并且它工作正常。现在,当我在Wildfly8.0上测试它作为webapp时,面临着Bouncy城堡的一些问题。
Wildfly 8.0正在使用安装了充气城堡供应商模块。 BC版本在v1.46中使用。
我开发的代码使用v1.51。 我按照此处提到的步骤:
- https://developer.jboss.org/thread/175395
- bouncycastle + JBoss AS7: JCE cannot authenticate the provider BC - 具体而言,接着在提供的指令对于特定部署(优选)
已经尝试过
- 安装JCE po licy文件。
- 添加到提供者列表中。
问题
我得到的错误是:
unable to read encrypted data: JCE cannot authenticate the provider BC
并触发上述错误,在如下的代码:
PKCS8EncryptedPrivateKeyInfo kp = (PKCS8EncryptedPrivateKeyInfo) keyPair;
InputDecryptorProvider pkcs8dec = new JceOpenSSLPKCS8DecryptorProviderBuilder()
.setProvider(new BouncyCastleProvider())
.build("somepass".toCharArray());
PrivateKeyInfo pko = kp.decryptPrivateKeyInfo(pkcs8dec);<-- ##Error here
还添加详细信息,在我的pom.xml中,我添加了具有编译范围的jar,所以这些库被复制到war和ge中安装在WEB-INF/lib中。
任何提示解决上述问题?
一结合彼得(@comment)和https://developer.jboss.org/thread/175395的理念,打造“自己的BC版”使用自定义名称:
-
在下面创建一个“我 .bouncycastle”模块方式:
在$ JBOSS_HOME /模块,创建目录 '我/BouncyCastle的/主'。目录'我的'可能不是在那里。 ;)
复制bcprov- [您的版本]的.jar到我/BouncyCastle的/主
-
创建文件“bcprov- [您的版本]的.jar。索引'我的/bouncycastle/main,这基本上是一个没有“.class”行的
jar -tf
命令的输出。 (管道&编辑...)我在顶部放了一个空行,因为这些.index文件总是有一个。我已将此文件附加为“bcprov-jdk16-1.46.jar.index”。
-
在创建一个名为“module.xml”文件,也是我/BouncyCastle的/主,这将指向jar文件和参考模块“javax.api”作为一个依赖。
我已将此文件附加为'module.xml'。 该模块已完成。
开始=>
- 因为我在EAR文件部署,我只好一个模块依赖项添加到我的EAR的META-INF/jboss的部署-structure.xml文件,下部分,像这样:
(声明也适用于WAR文件,在*部署时,使用定制ñ AME作为模块参考)
<deployment><dependencies><module name="my.bouncycastle" slot="main" export="true"/>
- 使某些该耳的/ lib目录不含有bcprov- [您版本]的.jar。 (实际上II)
注: 的 '插槽= “主” 和' 出口= “真” 参数在jboss-依赖-structure.xml文件非常重要 ..
二,调整你的Maven的依赖(IES)到:
<scope>provided</scope>
注:不要改变行家dependecy(IES组文物),以 “my.bouncycastle”,只是范围,这将确保你一个很好的编译大多数IDE的AND时间行为会阻止你的(maven-)war/jar/ear-plugin将它打包成libs! (无论如何,这将是正确的范围依赖这样的。)
您引用的'JBoss AS7:...'问题说:“创建一个Jboss模块(文件夹[...])。把[...]“,但在上面说BC jar被安装在WEB-INF/lib中。有没有可能你误解了那里的指示? –
现有的JBoss模块使用BC v1.46。我想用我的webapp使用BC v1.51。我无法升级JBoss模块以使用BC v1.51,因为还有其他webapps依赖于v1.46。希望这个清楚。 – eminemence
难道你不能为1.51创建第二个模块吗? –