2011-11-18 19 views
14

que han estado tratando de verificar la firma Jar:inválida archivo de firma SHA1

jarsigner -verify -verbose -certs example.jar 

me dieron el siguiente problema:

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

Tengo algunas sugerencias sobre el uso de -digestalg SHA-1 pero no sé donde debería poner esta declaración!

Espero que me puedan ayudar a solucionar el problema.

Respuesta

13

Aquí está la solución:

jarsigner -keystore mykeystore -digestalg SHA1 jarfile alias 

Para verificar:

jarsigner -verify -verbose -certs jarfile 
+0

Esta misma solución funciona si obtiene la variante SHA-256 del mensaje que recibía el OP. – slm

+3

esto solo funciona cuando los frascos originales no están firmados. –

+0

Esto no parece funcionar en Java 7 y 8. – Ahmed

27

Este error también puede ocurrir cuando el frasco está firmado dos veces.

La solución fue 'eliminar' el jar eliminando *. SF, *. DSA, *. RSA archivos del jar META-INF y luego volver a firmar el jar.

+1

Confirmado, para mí el problema fue que el contenedor se firmó dos veces. – Doug

+2

No fue suficiente en mi caso. También tuvo que eliminar registros "SHA" en el archivo de manifiesto. – Makatun

2

Esto funcionó para mí. Tuve que cambiar mi ANT a la versión 1.8.3 y agregar el atributo 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> 
Cuestiones relacionadas