Java META-INF中的jarsigner和文件/目录

Java META-INF中的jarsigner和文件/目录,java,jar,applet,jarsigner,meta-inf,Java,Jar,Applet,Jarsigner,Meta Inf,我在签署jar文件时遇到问题。我在META-INF目录中有一些文件,当我使用jarsigner时,它们没有得到签名,但是由于未签名的条目,验证失败 我没有创建jar,因此无法更改其结构和/或删除文件 如何从META-INF中获取已签名的文件 下面是build.xml文件中操作JAR文件的部分: 1345 <jar destfile="${proj.build.webui.war.dir}/name.jar" 1346 update="true

我在签署jar文件时遇到问题。我在META-INF目录中有一些文件,当我使用jarsigner时,它们没有得到签名,但是由于未签名的条目,验证失败

我没有创建jar,因此无法更改其结构和/或删除文件

如何从META-INF中获取已签名的文件

下面是build.xml文件中操作JAR文件的部分:

1345           <jar destfile="${proj.build.webui.war.dir}/name.jar"
1346               update="true">
1347               <manifest>
1348                   <attribute name="Permissions"
1349                       value="all-permissions"/>
1350                   <attribute name="Codebase" 
1351                       value="*"/>
1352                   <attribute name="Trusted-Library"
1353                       value="true"/>
1354               </manifest>
1355           </jar>
1356           <!-- sign the jar files -->
1357           <chmod perm="u+x">
1358               <fileset dir="${proj.buildtools.dir}">
1359                   <include name="DsJarSigner"/>
1360               </fileset>
1361           </chmod>
1362           <signjar destDir="${proj.build.webui.war.dir}"
1363               alias="encryptedAlias"
1364               keystore="${proj.buildtools.dir}/keystore.jks"
1365               storepass="encryptedPassword"
1366               executable="${proj.buildtools.dir}/DsJarSigner"
1367               preservelastmodified="true" >
1368               <path>
1369                   <fileset dir="${proj.build.webui.war.dir}" includes="name.jar" />
1370               </path>
1371               <flattenmapper />
1372           </signjar>
1345
1347
1348
1350
1352
1354
1355
1356
1357
1358
1359
1360
1361
1362
1368
1369
1370
1371
1372

DsJarSigner是一个简单的Java程序,名为jarsigner。

它看起来像是您的jarsigner跳过了
META-INF
中的文件。除了使用另一个签名者之外,您没有什么可以做的。例如,来自OpenJDK 8的jarsigner,它认为它与“签名相关”,而不是其他。我观察到来自Oracle JDK的jarsigner也这么做。

jarsigner应该对整个jar进行签名。您发出了什么命令,收到了什么错误消息?我使用的是ant任务,所以我不确定确切的命令是什么。签名后,清单中会出现新条目,如“Name:SHA1 Digest:LzA8be0iXjzymZZkAu/AeNM9yuQ=”等。但是META-INF中的文件没有这样的条目(例如,将其作为小程序使用时,我会收到关于未签名条目的安全异常。如果我手动从META-INF中删除除清单和2个签名相关文件以外的所有文件,则不会引发该异常。向我们展示build.xml的部分,从创建Jar开始,到Jar上的最后一个操作。这通常是由do引起的。)按错误的顺序创建内容。例如,在代码签名后为Jar条目编制索引。我在问题中添加了build.xml的一部分。请注意,我没有创建Jar,也无法修改其结构。