在Java7u45之后,java-web-start为我的jnlp中的一些jar提供了JARSigningExcepti



我是jarSigning问题的新手,但几天来我遇到了麻烦,并搜索/学到了很多东西。(这个话题与我的问题无关:为什么Java Web Start说一个签名的jar文件是未签名的?)

我在我的java-web-start项目中使用org.apache.commons软件包,它多年来一直具有魅力。上周,在 java 7 更新 45 之后,我们的用户无法运行通过 JNLP 运行的应用程序。他们收到的错误是"JARSigningException",与属于Apache的一些jar有关。我从 jnlp 中删除了对应于这 6 个 jar 的行,然后我们能够启动 webstart 应用程序,但在运行时我们有一些例外。

所有 jar 都是使用相同的证书自签名的(我自己没有签名,但由于我们从几天前开始就没有问题,所以它们应该使用相同的证书签名)

当我验证有问题的jar文件时,如下所示: jarsigner -verify commons-digester-1.7.jar

我收到以下消息:

jar verified.

警告:

This jar contains unsigned entries which have not been integrity-checked.
This jar contains entries whose signer certificate has expired.
This jar contains entries whose certificate chain is not validated.
Re-run with the -verbose and -certs options for more details.

如果 Jar 文件已验证,为什么当我尝试运行 jnlp 文件时仍然收到 JARSigningException?

任何帮助将不胜感激,提前感谢,

有关 Java7 Update45 中安全性更改的更多信息,请参阅 http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html。 U51的变化开始进一步关闭安全问题的大门。 http://java.com/en/download/faq/release_changes.xml

通用规则是我们下载的 JNLP 应用程序中的所有 jar 都需要使用相同的证书进行签名,但就像我说的,我认为现在对自签名证书有更严格的限制。

还发现了这个博客 https://blogs.oracle.com/java-platform-group/entry/updated_security_baseline_7u45_impacts

当设置为"高"或"非常高"时,安全滑块设置(在 Windows - 控制面板 -> Java 中,然后是"安全"选项卡)将阻止自签名和未签名的应用程序。

最新更新