如何为Java 8u141签署Java Webstart应用程序?

时间:2017-07-19 13:07:19

标签: java code-signing java-web-start

看起来Oracle已经发生了类似于Java 7u45的更改,其中需要设置新的清单值来运行签名的Java Webstart应用程序(请参阅here)。

目前,我们使用Java 8u131签名的应用程序无法从Java8u141开始,错误消息为Could not verify signing in resource: (arbitrary resource.jar)

您是否仍然可以使用Java 8u141运行已签名的Webstart应用程序,即我是否有特殊问题?

release notes中有关于安全性更改的说明,但它们与代码签名无关。另外crypto roadmap看起来这个版本并没有真正改变代码签名,尽管例如Java 8u131,其中删除了MD5支持。但是Java 8u131对我有用,Maven Java Webstart插件也使用SHA-256-Digest。

5 个答案:

答案 0 :(得分:7)

我找到了解决方案,或者更确切地说是解决问题的方法。有问题的jar在我们的例子中是commons-httpclient-3.1.jar。清单包含以下条目

Name: org/apache/commons/httpclient

我在最后添加了一个/然后我签名并重新部署了该应用程序。

Name: org/apache/commons/httpclient/

这次Web启动应用程序启动没有任何问题。在这两种情况下,jar都是用java 8u141签名的,jarsigner可以验证jar,但是webstart没有在第一种情况下启动。在我看来,这是一个webstart错误。

答案 1 :(得分:1)

我对 java 8u141 的Java Webstart Application遇到了同样的问题。它也包含 commons-httpclient-3.1.jar 。问题正好在这个罐子里。

看起来验证算法已经改变了。现在所有清单条目都应该有摘要。我发现这个原始jar已经包含一个清单条目 org / apache / commons / httpclient 而没有摘要

Name: org/apache/commons/httpclient
Implementation-Title: org.apache.commons.httpclient
Implementation-Version: 3.1
X-Compile-Target-JDK: 1.2
Specification-Vendor: Apache Software Foundation
Specification-Title: Jakarta Commons HttpClient
Implementation-Vendor-Id: org.apache
Extension-name: org.apache.commons.httpclient
X-Compile-Source-JDK: 1.2
Specification-Version: 3.1
Implementation-Vendor: Apache Software Foundation

我通过更改ant jar任务设置来解决问题。我添加了排除'zipfileset' 的.MF文件(也可能是.SF,.RSA,.DSA文件)。此外,可能需要更改属性'filesetmanifest'= merge。

它会阻止在最终签名的jar中显示该条目。

答案 2 :(得分:0)

影响代码签名的更改:已禁用SHA-1证书。您在链接的发行说明中提到了这一点。他们特别提到:

  

名为usage的新约束,在设置时,如果在指定用途的证书链中使用该算法,则会限制该算法。最初支持三种用法:TLS / SSL服务器证书链为TLSServer,TLS / SSL客户端证书链为TLSClient,签名JAR使用的证书链为 SignedJAR

(强调我的)。另请注意,发行说明讨论了整个证书链。因此,即使您的签名证书使用更新/更强的哈希算法(SHA2等),如果颁发机构的证书使用SHA1,它仍然可能会被拒绝。

更多详情:

https://bugs.openjdk.java.net/browse/JDK-8176536

http://openjdk.java.net/jeps/288

答案 3 :(得分:0)

我遇到了同样的问题。我的解决方案是通过修改构建脚本(ant:jar filesOnly =“true”)或使用小的groovy脚本来删除jar中的所有目录条目(因为它们通常无用),以重新打包没有dir条目的jar。

这绝对是一个JWS错误 - 我想知道甲骨文是如何忽视它的,以及它们是否会为此提供快速解决方案......

答案 4 :(得分:0)

我遇到了commons-httpclient-3.1.jar,axis-1.4.jar,xml-resolver-1.2.jar,oro-2.0.8.jar的问题。打开MANIFEST.MF,在名称末尾添加“/”。重新构建并签署项目,现在它可以正常工作