背景
我正在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/cache
,data/tmp
和data/kar
文件夹,再次启动Karaf并通过以下两个步骤执行部署:
安装胖KAR来覆盖我的应用需要运行的所有第三方捆绑软件,其使用方式为:kar:install
通过托管在私有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
投放的分发包,是否有任何方法可以绕过/解决完整性不一致的问题?