2011-11-18 26 views
14

Ho cercato di verificare la firma Jar:non valida file di firma SHA1 digest

jarsigner -verify -verbose -certs example.jar 

ho ottenuto il seguente problema:

jarsigner: java.lang.SecurityException: invalid SHA1 signature file digest for o 
rg/apache/log4j/net/DefaultEvaluator.class 

ho avuto alcuni suggerimenti su come utilizzare -digestalg SHA-1 ma non so dove dovrei mettere questa affermazione!

Spero che tu possa aiutarmi a risolvere il problema.

risposta

13

ecco la soluzione:

jarsigner -keystore mykeystore -digestalg SHA1 jarfile alias 

per verificare:

jarsigner -verify -verbose -certs jarfile 
+0

Questa stessa soluzione funziona se stai ricevendo la variante SHA-256 del messaggio del PO stava diventando. – slm

+3

funziona solo se i giare originali non sono già firmati. –

+0

Questo non sembra funzionare su Java 7 e 8. – Ahmed

27

Questo errore può anche accadere quando il vaso è firmato due volte.

La soluzione era "non firmare" il contenitore cancellando *. SF, *. DSA, *. RSA file dal META-INF e quindi firmare nuovamente il barattolo.

+1

Confermato, per me il problema era il barattolo firmato due volte. – Doug

+2

Nel mio caso non era abbastanza. Doveva anche cancellare i record "SHA" nel file manifest. – Makatun

2

Questo ha funzionato per me. Ho dovuto cambiare il mio ANT alla versione 1.8.3 e aggiungere l'attributo 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> 
Problemi correlati