2011-11-18 14 views
14

मैं जार पर हस्ताक्षर सत्यापित करने के लिए कोशिश कर रहे हैं:अमान्य SHA1 हस्ताक्षर फ़ाइल को पचाने

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 उपयोग के बारे में कुछ सुझाव मिल गया लेकिन मैं नहीं जानता कि जहां मुझे यह बयान देना चाहिए!

मुझे आशा है कि आप समस्या को ठीक करने में मेरी मदद कर सकते हैं।

jarsigner -keystore mykeystore -digestalg SHA1 jarfile alias 

सत्यापित करने के लिए:

उत्तर

13

यहाँ समाधान है

jarsigner -verify -verbose -certs jarfile 
+0

यह वही समाधान काम करता है यदि आपको ओपी प्राप्त होने वाले संदेश का SHA-256 संस्करण प्राप्त हो रहा है। – slm

+3

यह केवल तभी काम करता है जब मूल जार पहले से हस्ताक्षरित नहीं होते हैं। –

+0

यह जावा 7 और 8 पर काम नहीं कर रहा है। – Ahmed

27

यह त्रुटि जब जार में दो बार प्रवेश किया गया है हो सकता है।

समाधान * हटाकर जार को 'अनजान' करना था। एसएफ, *। डीएसए, *। आरएसए जार के मेटा-आईएनएफ से फ़ाइलें और फिर फिर जार पर हस्ताक्षर करें।

+1

पुष्टि की, मेरे लिए समस्या दो बार हस्ताक्षर की गई थी। – Doug

+2

मेरे मामले में पर्याप्त नहीं था। मैनिफेस्ट फ़ाइल में "SHA" रिकॉर्ड्स को भी हटाना पड़ा। – Makatun

2

यह मेरे लिए काम किया। मुझे अपना एएनटी संस्करण 1.8.3 में बदलना पड़ा और डीआईजीएस्टएएलजी विशेषता को जोड़ना पड़ा:

<!-- 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> 
संबंधित मुद्दे