2011-11-18 16 views
14

ダイジェスト私はJAR署名を検証しようとしている:私は-digestalg SHA-1の使用に関するいくつかの提案を得たが、私にはわからない無効SHA1の署名ファイルは

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

jarsigner -verify -verbose -certs example.jar 

私は、次の問題を抱えて私はこの声明をどこに置くべきですか?

私はこの問題を解決するのを手伝ってください。ここで

答えて

13

は、ソリューションです:

jarsigner -keystore mykeystore -digestalg SHA1 jarfile alias 

確認するには:

jarsigner -verify -verbose -certs jarfile 
+0

:私は、バージョン1.8.3への私のANTを変更し、DIGESTALG属性を追加する必要がありました。 – slm

+3

これは、オリジナルのjarがまだ署名されていない場合にのみ機能します。 –

+0

これはJava 7&8では動作しないようです。 – Ahmed

27

瓶が二回署名されたときに、このエラーも発生する可能性があります。

解決策は、*を削除することによってjarファイルを '署名解除'することでした。 SF、*。 DSA、*。 RSAファイルをjarのMETA-INFから取得して、再びjarファイルに署名します。

+1

私にとっては、問題はJarファイルが2度署名されたことです。 – Doug

+2

私の場合は十分ではありませんでした。また、マニフェストファイル内の "SHA"レコードを削除する必要がありました。 – Makatun

2

これは私のために働いた。あなたはOPが取得されたメッセージのSHA-256の変異体を取得している場合は、この同じ解決策が機能

<!-- 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>