Java 9 弃用 SHA1 证书,还是其他问题?

Java 9 deprecating SHA1 certificates, or another issue at work?

[UPDATE] Oracle 刚刚修改了加密路线图 (https://www.java.com/en/jre-jdk-cryptoroadmap.html),他们将 not 弃用 SHA-1代码签名:2017-03-14 Target date changed from 2017-04-18 to 2017-07-18. Narrowed scope from all SHA-1 usage: only TLS will be affected, *code signing will not not be affected at this time*.

这不会以任何方式影响我在下面收到的很好的答案,因为毫无疑问,它将在未来适用。

--

原文post:

尝试 运行 我们在 JRE 9 ea 153 上部署的 Webstart Java 应用程序,我收到以下弹出窗口:

进一步查看详细信息,我看到证书在一段时间内仍然有效:

,因此,我想知道弃用 SHA1 是否是原因?

这听起来确实像是一项符合 () 的政策,但该消息听起来对新手不太友好(尤其是当它面向最终用户时),所以我想知道。

我在找路线图。 This 是我发现的,但我不确定我是否正确解释了这一段:

Disable SHA-1 in certificate chains anchored by roots included by default in Oracle's JDK; local or enterprise CAs are not affected. Signed code that is timestamped before 2017-01-01 is not affected.

作为上述失败的原因。非常感谢您的确认。

FWIW,我们的证书是由 CA 颁发的,我认为它与 "enterprise" CA 不同。

谢谢。

如果该签名的 Jar 旨在供 end-users 使用,则 2017 年通过 SHA1 签名的包将无法使用。

很久以前就宣布了逐步淘汰 SHA1。 唯一的方法是安装本地 CA 或其他东西,但这不会发生在 end-user 机器上(也不应该)。

要为您的 end-users 签署一个 Jar,您需要来自您的 CA 的新的有效 SHA-256 证书,以及 re-sign 在 2016 年 12 月 31 日之后用旧证书签署的任何 Jar。 无论如何,您的证书将在几个月后过期。

是否必须对 jar 进行双重签名取决于您所针对的最旧的 JVM 版本。据我所知,>=1.4.2 的任何东西都支持 SHA-256。如果你想针对更旧的版本(地狱当我开始编程时 java 1.5 已经被认为是旧的)你需要像 dual-signing 这样的东西。可以找到更多信息 and here

"How to dual sign a jar"可能是个新话题,因为我认为它与这个问题几乎没有关系。