看起来Oracle进行了类似于Java7u45的更改,需要设置新的清单值来运行已签名的Java应用程序(请参阅这里)。
目前,我们使用Java8u131进行签名的应用程序没有从Java8u141开始使用错误消息Could not verify signing in resource: (arbitrary resource.jar)。
您还能用Java 8u141运行您已签名的Webstart应用程序吗?也就是说,我有特殊的问题吗?
在发布说明中有一个关于安全性更改的注释,但是它们看起来与代码签名无关。另外,密码路线图看起来并没有真正改变代码签名,尽管Java8u131已经删除了MD5支持。但是Java 8u131正在为我工作,Maven Java Webstart插件也使用SHA-256-Digest。
发布于 2017-07-20 08:24:46
我已经找到了解决这个问题的办法,或者更确切地说是一个解决办法。在我们的例子中,这个jar是3.1.jar。清单包含以下条目
Name: org/apache/commons/httpclient最后我添加了一个/,然后对应用程序进行了签名和重新部署。
Name: org/apache/commons/httpclient/这一次,web启动应用程序启动时没有任何问题。在这两种情况下,jar都是用java 8u141签名的,jarsigner可以验证jar,但是webstart在第一种情况下没有启动。在我看来,这是一个webstart错误。
发布于 2017-07-20 09:49:13
for 、Java 8u141也有同样的问题。它也包含commons-httpclient-3.1.jar。问题就在这个罐子里。
看来验证的算法已经改变了。现在所有的清单条目都应该有摘要。我发现这个原始jar已经包含了一个清单条目org/apache/digest/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任务设置来解决问题。我在中添加了“zipfileset”的.MF文件(可能是.SF、.RSA、.DSA文件)。此外,还可能需要更改属性“filet清单”= merge。
它防止在最终签名的jar中出现显式条目。
发布于 2017-07-19 16:59:20
有一个影响代码签名的更改:沙-1证书被禁用。在您链接到的发布说明中提到了这一点。他们特别提到:
一个名为
usage的新约束在设置时,如果在证书链中用于指定的用途,则限制该算法。最初支持三种用法:用于TLS/SSL服务器证书链的TLSServer、用于TLS/SSL客户端证书链的TLSClient以及用于签名JAR的证书链的TLSClient。
(强调我的)。还请注意,发布说明讨论了整个证书链。因此,即使您的签名证书使用了更新的/更强的散列算法(SHA2等),如果颁发机构的证书使用SHA1,仍然可以拒绝它。
更多详情请浏览:
https://bugs.openjdk.java.net/browse/JDK-8176536
http://openjdk.java.net/jeps/288
https://stackoverflow.com/questions/45191576
复制相似问题