JavaEE + JBoss:验证所有部署的war文件

Posted

技术标签:

【中文标题】JavaEE + JBoss:验证所有部署的war文件【英文标题】:JavaEE + JBoss: Verify all deployed war files 【发布时间】:2019-05-29 19:19:14 【问题描述】:

我的客户有一台符合 JavaEE 的服务器。我向他发送了一些战争文件和相应的校验和以进行部署。现在我想防止操作员在部署之前操纵war文件。

是否有可能在服务器启动时沿校验和验证 war 文件?是否有可能获得当前部署的战争文件的校验和?例如,是否已经有这样的功能? JBoss EAP?

【问题讨论】:

您可能想尝试Signing and Verifying JAR Files 来完成此操作。您可以对 WAR 文件进行签名,就像它是 JAR 文件一样。 其中一种方式:# sha1sum TestApp.war cb16a87d23644fb166000b4b739ef12257b77326 Test.war - 以上值应与 内“data/content/cb”下的以下目录名称匹配:# ls -lart drwxrwxr-x. 2 tmp tmp 4096 Jan 8 03:38 16a87d23644fb166000b4b739ef12257b77326 寻找相同的功能,我看到redhat support access.redhat.com/solutions/4201991 的帖子告诉JBOSS EAP 7 只检查签名的Jar,但不检查签名的EAR 和WAR。已完成增强请求,但仍在进行中。 【参考方案1】:

托管部署(war/ear/jar)在部署时被散列:这个散列可以通过 jboss-cli 访问:

/deployment=helloworld-mdb.war:read-resource(include-runtime) 
    "outcome" => "success",
    "result" => 
        "content" => ["hash" => bytes 
            0xd1, 0xa1, 0x0a, 0xb1, 0x0a, 0xe5, 0xd9, 0xeb,
            0x9d, 0x86, 0xba, 0x66, 0x8e, 0x24, 0x14, 0xc0,
            0x13, 0x72, 0xd1, 0x1a
        ],
        "disabled-time" => undefined,
        "disabled-timestamp" => undefined,
        "enabled" => true,
        "enabled-time" => 1546534691069L,
        "enabled-timestamp" => "2019-01-03 17:58:11,069 CET",
        "managed" => true,
        "name" => "helloworld-mdb.war",
        "owner" => undefined,
        "persistent" => true,
        "runtime-name" => "helloworld-mdb.war",
        "status" => "OK",
        "subdeployment" => undefined,
        "subsystem" => 
            "messaging-activemq" => undefined,
            "undertow" => undefined,
            "ejb3" => undefined,
            "logging" => undefined
        
     

您可以看到以字节为单位的“哈希”

【讨论】:

其中一种方式:# sha1sum TestApp.war cb16a87d23644fb166000b4b739ef12257b77326 Test.war - 以上值应与 内“data/content/cb”下的以下目录名称匹配:# ls -lart drwxrwxr-x. 2 tmp tmp 4096 Jan 8 03:38 16a87d23644fb166000b4b739ef12257b77326

以上是关于JavaEE + JBoss:验证所有部署的war文件的主要内容,如果未能解决你的问题,请参考以下文章

Jboss部署启动异常

如何从 Jboss EAP 6.4 中部署的所有战争的 manifest.mf 文件中获取实现版本详细信息

无法在jboss AS 7.1.1中部署war文件

如何从 Eclipse 将 Maven 项目的 WAR 部署到 JBoss 服务器?

从快照存储库下载 WAR 并使用 mvn 部署到本地 JBoss

将war文件部署到JBOSS 7.1.1版本时引发未知错误