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

时间:2014-06-24 13:15:27

标签: java jar applet jarsigner meta-inf

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

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

如何从META-INF签名文件?

以下是操作JAR文件的build.xml文件的一部分:

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>

DsJarSigner是一个简单的Java程序,可以调用jarsigner。

1 个答案:

答案 0 :(得分:0)

看起来您的 jarsigner会跳过META-INF中的文件。除了使用其他签名者之外,您无能为力。例如,来自OpenJDK 8 skips some files from META-INF的jarsigner,它认为是“签名相关”,而不是其他人。我观察到来自Oracle JDK的jarsigners做了同样的事情。