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

[ 更新 ] Oracle刚刚修改了加密路线图( https://www.java.com/en/jre-jdk-cryptoroadmap.html ),他们不会弃用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*. 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*.

这无论如何都不会影响我在下面收到的正确答案,因为它将来会适用。

原帖:

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

在此处输入图像描述

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

在此处输入图像描述

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

这当然听起来像是一个符合( 业内其他人 )的政策,但这个消息听起来并不是新手友好的(特别是如果它意味着面对最终用户),所以我不知道。

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

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颁发,我认为它与“企业”CA不同。

谢谢。

如果最终用户打算使用已签名的Jar,则2017年签署的SHA1包无法正常运行。

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

要为您的最终用户签署一个Jar,您需要从CA获得一个新的有效SHA-256证书,并重新签署任何使用旧版本签署的Jar,在2016年12月31日之后签署。 无论如何,您的证书将在几个月后到期。

是否必须对您的jar子进行双重签名取决于您要定位的最旧的JVM版本。 据我所知,> = 1.4.2支持SHA-256。 如果你想要甚至更老的版本(当我开始编程java 1.5时已经被认为是OLD),你需要像双签名这样的东西。 更多信息可以在这里和这里找到

“如何对一个jar子进行双重签名”可能是一个新话题,因为它与我认为的这个问题几乎无关。