2017-07-27 39 views
0

更新到JDK 8u131后,我们无法再签署一些jar文件。我们正在使用ant的<signjar>任务进行签名。签名失败,出现以下错误:无法签名jar:java.io.IOException:无效编码:多余的前导0s

[signjar] jarsigner: unable to sign jar: java.io.IOException: 
    Invalid encoding: redundant leading 0s 

有趣的是,有时罐子签名成功,有时签名失败。我发现了以下错误:

https://bugs.openjdk.java.net/browse/JDK-8175251

还有人建议正常化使用下面的命令一个PKCS12文件:

openssl pkcs12 -in CodeSign.pfx -out key-and-cert -nodes 
openssl pkcs12 -in key-and-cert -export -out CodeSign2.pfx 

然而,即使执行这些命令,并使用新的密钥文件,我仍然得到后相同的“冗余前导0”错误。

临时解决方法是使用JDK 8u112或更早的版本。

任何想法如何解决这个问题?

+0

你可以使用verbose =“true”运行signjar并显示该命令(不带密码)吗?你是否使用'tsaurl'选项? –

+0

@RonaldKlop我已经用'verbose =“true”'签名了(日志中没有什么值得注意的)。是的,我正在使用'tsaurl =“http://timestamp.digicert.com” – ZhekaKozlov

回答

0

我们遇到了同样的问题。 最新的jdk 1.8.0_151似乎解决了这个问题。检测到无效的jar与jarsigner -verify不再一样了。