[ 更新 ] 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*.
这不会影响我在下面收到的正确答案,因为它将来会适用.
-
原帖:
试图运行我们的Webstart部署的Java应用程序JRE 9 ea 153
,我得到以下弹出窗口:
进一步查看详细信息,我发现证书仍然有效一段时间:
因此,我想知道是否弃用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日之后签署.无论如何,您的证书将在几个月内过期.
是否必须对您的罐子进行双重签名取决于您要定位的最旧的JVM版本.据我所知,> = 1.4.2支持SHA-256.如果你想定位甚至更旧的版本(当我开始编程java 1.5时已经被认为是OLD),你需要像双签名这样的东西.更多信息可以在这里和这里找到
"如何对一个罐子进行双重签名"可能是一个新话题,因为它与我认为的这个问题几乎无关.