我一直在尝试验证Jar签名:
jarsigner -verify -verbose -certs example.jar
我遇到了以下问题:
jarsigner: java.lang.SecurityException: invalid SHA1 signature file digest for o
rg/apache/log4j/net/DefaultEvaluator.class
我得到了一些关于使用-digestalg SHA-1
的建议,但我不知道应该把这句话放在哪里!
我希望你能帮我解决问题。
答案 0 :(得分:30)
当jar被签名两次时也会发生此错误。
解决方案是通过从jar中删除*。 SF ,*。 DSA ,*。 RSA 文件来“取消签名”该jar META-INF ,然后再次签名。
答案 1 :(得分:15)
以下是解决方案:
jarsigner -keystore mykeystore -digestalg SHA1 jarfile alias
验证:
jarsigner -verify -verbose -certs jarfile
答案 2 :(得分:2)
这对我有用。我不得不将ANT更改为1.8.3版并添加DIGESTALG属性:
<!-- VLS2014 ADDED digestalg="SHA1" -->
<signjar keystore="${security.keystore}"
storepass="${security.storepass}"
keypass="${security.keypass}"
alias="${security.alias}"
jar="${basedir}/temp/tj/${justfname}"
signedjar="${real.signed.jar}"
digestalg="SHA1"
/>
<delete file="${basedir}/temp/tj/${justfname}" />
</target>