我正在尝试在solaris上使用signtool对第三方jars进行签名。jar已经有了一个manifest.mf文件,但是signtool在META-INF/目录中创建了一个新的MANIFEST.MF文件,并使用该文件对jar进行签名。如果我尝试验证签名的jar,它会失败,因为有两个不同版本的清单文件。如果我将当前manifest.mf文件中的内容复制到MANIFESET.MF中,signtool会覆盖数据。
有没有办法指定用什么文件来签署jar (例如manifest.mf上的MANIFEST.MF)?或者,有没有办法告诉signtool在新的MANIFEST.MF中包含什么?
这是一个迫在眉睫的问题,因为java的下一次更新需要对jar进行签名,并包括applet的权限标签。
发布于 2014-06-06 23:32:09
我只涉猎了一个我必须维护的小程序,而不是我自己,而且我自己也不是专家,我发现关于这个主题的信息很少。我在signtool参数"-m“(元文件)的隐秘文档中找到了一些东西。在https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Tools/signtool中,我猜测"+如果您想指定全局元数据(即关于JAR存档本身或存档中所有条目的元数据)“可能是对META-INF/MANIFEST.MF的隐秘引用--看起来确实是这样。
使用带有build.xml的anthill,并且不知道更好的约定,我创建了一个"src\antBuild\ signtool -extras.mf“,并在我的signtool调用中使用了"-m {basedir}\src\antBuild\signtool-extras.mf”。我放在" signtool -extras.mf“中以"+”开头的内容被添加到signtool生成的MANIFEST.MF中。
在我的例子中,我添加了两行"+ Permissions: all-permissions“和一行标识"+ Application-Name: Cris Mooney FTP Applet”。这些都显示在生成的jar文件的META-INF/MANIFEST.MF中,这满足了当前的Java引擎的要求。此外,与我在其他地方读到的相反,Java目前并没有抱怨没有“代码库”,我对此知之甚少,但选择忽略它,因为我预计我的工具会在QA中抱怨,这已经足够没有记录的痛苦了。
希望这对某些人有帮助,我希望在相对黑暗的情况下听到对我的猜测的澄清和更正。
注意--我的解决方案是解决这两个Java 1.7.0_55问题:
URL/FTPApplet.jar缺少权限清单属性
URL/FTPpplet.jar缺少应用程序名称清单属性
https://stackoverflow.com/questions/20941158
复制相似问题