在 fuse esb 中添加 bouncycastle 提供程序
Posted
技术标签:
【中文标题】在 fuse esb 中添加 bouncycastle 提供程序【英文标题】:Adding bouncycastle provider in fuse esb 【发布时间】:2020-05-05 05:57:52 【问题描述】:我的应用程序中运行在 fuse esb 中的 osgi 包需要 bouncycastle 提供的 pgp 加密。 Bouncycastle 提供者不应影响其他应用程序捆绑包/融合 esb 功能。既然bouncycastle不是OSGI jar,那怎么添加到fuse ESB环境呢?
我将 bouncycastle jar 重新打包为 OSGI jar,但它给出了签名错误。我将 jar 复制到 JDK 安全目录,但我的应用程序包没有开始说找不到 bouncycastle 类。与复制到 karaf 外部库目录相同。
【问题讨论】:
【参考方案1】:您没有指定 Fuse ESB 的版本(当时称为 JBoss Fuse,现在称为 Red Hat Fuse)。我用的是 Fuse 7.6。
我检查了一个简单的 pgp 示例,我只需要将 bcpg-jdk15on-164.jar
添加到 $FUSE_HOME/lib/ext
- 这个目录已经包含 bcpkix
和 bcprov
库。但是,bcpg
库提供了 OpenPGP 支持。
从 OSGi 的角度来看,您只需要正确的导入(或动态导入)。无需安装任何bundle,因为一切都在$FUSE_HOME/etc/config.properties
中配置:
org.osgi.framework.bootdelegation = \
...
sun.*, \
org.bouncycastle, \
org.bouncycastle.*, \
...
如果您使用的是 JBoss Fuse 6.x,则相同。仅$FUSE_HOME/lib/ext
仅包含bcprov-jdk15on.jar
。
【讨论】:
JBoss Fuse (6.0.0.redhat-024) 您的意思是作为包导入包含在 org.apache.felix maven 插件中,如下所示?1) 将 bouncycastle jar 文件添加到 lib/ext
2)在 etc/config.properties 中将 bouncycastle 包添加到 bootdelegation(如上第一个答案)
3) 从 maven-bundle-plugin 的导入部分中显式删除 bouncycastle 包
<Import-Package>
!org.bouncycastle.jce.*,
!org.bouncycastle.bcpg.*,
!org.bouncycastle.openpgp.*,
!org.bouncycastle.openpgp.operator.*,
!org.bouncycastle.openpgp.operator.bc.*,
!org.bouncycastle.openpgp.operator.jcajce.*,
*
</Import-Package>
4) 在动态导入部分导入这些包
【讨论】:
以上是关于在 fuse esb 中添加 bouncycastle 提供程序的主要内容,如果未能解决你的问题,请参考以下文章
为 Fused location API 添加 addGpsStatusListener