2

背景

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

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

部署本身是完全自动化的,并且每次都能正常工作。部署开始前,先停止Karaf,然后data/cache清理data/tmp文件data/kar夹,重新启动Karaf,按照以下两个步骤进行部署:

  1. 安装包含我的应用程序需要运行的所有第三方捆绑包的胖 KAR,其中:kar:install

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

问题

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

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

有什么方法可以绕过/解决 Karaf 提供的捆绑包完整性不一致的问题data/cache

4

0 回答 0