emi*_*nce 10 java jboss bouncycastle war wildfly-8
背景
我正在尝试使用充气城堡库在我的战争中解密私钥.现在我在一个独立的应用程序中首先测试了代码,它运行良好.现在,当我在Wildfly8.0中测试它作为webapp时,我正面临着与Bouncy城堡的一些问题.
Wildfly 8.0 am使用安装了充气城堡提供者模块.在v1.46中使用的BC版本.
我开发的代码使用v1.51.我按照这里提到的步骤:
已经尝试过了
问题
我得到的错误是:
unable to read encrypted data: JCE cannot authenticate the provider BC
Run Code Online (Sandbox Code Playgroud)
以及触发上述错误的代码如下:
PKCS8EncryptedPrivateKeyInfo kp = (PKCS8EncryptedPrivateKeyInfo) keyPair;
InputDecryptorProvider pkcs8dec = new JceOpenSSLPKCS8DecryptorProviderBuilder()
.setProvider(new BouncyCastleProvider())
.build("somepass".toCharArray());
PrivateKeyInfo pko = kp.decryptPrivateKeyInfo(pkcs8dec);<-- ##Error here
Run Code Online (Sandbox Code Playgroud)
另外要添加详细信息,在我的pom.xml中我添加了带有编译范围的jar,因此libs被复制到war中并安装在WEB-INF/lib中.
解决上述问题的任何提示?
I. 结合 Peter (@comment) 和https://developer.jboss.org/thread/175395的想法,使用自定义名称创建“您自己的 bc 版本”:
按以下方式创建“ my .bouncycastle”模块:
在 $JBOSS_HOME/modules 下,创建目录“ my /bouncycastle/main”。目录“我的”可能不存在。;)
将 bcprov- [your-version] .jar 复制到我的/bouncycastle/main中
在我的/bouncycastle/main 中创建文件“bcprov- [your-version] .jar.index” ,这基本上是不带“.class”行的命令的输出。(管道并编辑...)jar -tf
我在顶部添加了一个空行,因为这些 .index 文件似乎总是有一个空行。我已将此文件附加为“bcprov-jdk16-1.46.jar.index”。
创建一个名为“module.xml”的文件,也在我的/bouncycastle/main 中,它将指向 jar 文件并引用模块“javax.api”作为依赖项。
我已将此文件附加为“module.xml”。该模块已完成。
- 由于我在 EAR 文件中进行部署,因此我必须将模块依赖项添加到 EAR 的 META-INF/jboss-deployment-struction.xml 文件的该部分下,如下所示:
(该语句也适用于WAR文件,部署在顶层时,使用自定义名称作为模块引用)
<deployment><dependencies><module name="my.bouncycastle" slot="main" export="true"/>
Run Code Online (Sandbox Code Playgroud)
注意: 'slot="main" 和 'export="true" 参数在 jboss-dependency-struct.xml 文件中非常重要......
二. 将您的 Maven 依赖项调整为:
<scope>provided</scope>
Run Code Online (Sandbox Code Playgroud)
注意:不要将 Maven 依赖项(即组工件)更改为“my.bouncycastle”,仅更改范围,这将确保您在大多数 IDE 中获得良好的编译时行为,并且将防止您的 (maven-)war/ jar/ear-plugin 将其打包到库中!(无论如何,这都是像这样的依赖项的正确范围。)
| 归档时间: |
|
| 查看次数: |
2349 次 |
| 最近记录: |