部署之间在Karaf中的软件包完整性不一致

时间:2019-02-26 12:47:14

标签: java apache-karaf integrity apache-karaf-feature

背景

我正在RHEL 6上使用Karaf 4.2.0和最新的可用Oracle JDK 1.8.x。

出于安全原因,我正在尝试寻找最佳方法来验证Karaf提供的捆绑包的完整性。我当前使用的方法是计算在$KARAF_HOME/data/cache/bundle*/version0.0/找到的所有bundle.jar文件的SHA1哈希,并将它们与我在不同环境中部署到另一个Karaf实例的文件进行比较。

部署本身是完全自动化的,并且每次都能工作。在开始部署之前,首先停止Karaf,然后清理data/cachedata/tmpdata/kar文件夹,再次启动Karaf并通过以下两个步骤执行部署:

  1. 安装胖KAR来覆盖我的应用需要运行的所有第三方捆绑软件,其使用方式为:kar:install

  2. 通过托管在私有Artifactory实例上的Karaf功能文件连同引用包一起安装我的应用程序包,其中包括:feature:repo-add -i

问题

每次部署都会导致data/cache/文件夹中的第三方捆绑包具有不同的SHA1哈希值,即使JAR内容相同(通过解压缩它们并运行递归diff进行验证)。此外,SHA1与Maven Central中的SHA1不匹配。看起来Karaf在data/cache为JAR提供服务的过程中正在重新打包JAR,从而使SHA1总和有所不同。

对于我自己的应用程序捆绑包,它们的SHA1哈希在应用程序重新部署(以及同一功能文件到不同环境的部署)之间是一致的,但始终与我的私有Artifactory服务器上的不一致。

对于从Karaf的data/cache投放的分发包,是否有任何方法可以绕过/解决完整性不一致的问题?

0 个答案:

没有答案