背景
我在 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,按照以下两个步骤进行部署:
安装包含我的应用程序需要运行的所有第三方捆绑包的胖 KAR,其中:
kar:install
通过托管在私有 Artifactory 实例上的 Karaf 功能文件以及引用包安装我的应用程序包,其中:
feature:repo-add -i
问题
每次部署都会导致文件夹中的第三方包data/cache/
具有不同的 SHA1 哈希,即使 JAR 内容相同(通过解包并运行递归差异来验证)。此外,SHA1 与 Maven Central 中的不匹配。看起来 Karaf 在从 为 JAR 提供服务的过程中重新打包了 JAR data/cache
,从而产生了 SHA1 总和的差异。
对于我自己的应用程序包,它们的 SHA1 哈希值在应用程序重新部署(以及将相同功能文件部署到不同环境)之间是一致的,但始终与我的私有 Artifactory 服务器上的不同。
有什么方法可以绕过/解决 Karaf 提供的捆绑包完整性不一致的问题data/cache
?