2017-07-27 78 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不再一樣了。