2010-01-29 11 views
16

मेरा मतलब है कि मेरे पास पुराने हस्ताक्षर के साथ जार है। और मैं इसे नए हस्ताक्षर से इस्तीफा देना चाहता हूं। तो क्या यह संभव है?क्या हम जावा में पहले से हस्ताक्षरित जार इस्तीफा दे सकते हैं?

यदि हां के बारे में कम जानकारी चाहिए तो कैसे?

उत्तर

13

के साथ फिर से-जार हस्ताक्षर एक आप ही, आपको पहले जार unjar करने की आवश्यकता होगी नहीं है।

तो जैसा

(यूनिक्स मान, अन्यथा डॉस से अनुवाद):

jar xvf JarName.jar 

rm -rf META-INF 

jar cvf JarName.jar * 

अब तुम जार हस्ताक्षर करने के लिए

jarsigner -keystore /yourkeystoredirectory/mystore -storepass yourpass 
     -keypass yourkeypasswd JarName.jar keyname 

आप एक कुंजी संग्रह नहीं है, तो jarsigner चलाने की आवश्यकता है, तो आप keytool के साथ एक बना सकते हैं।

+3

(उदाहरण के लिए वहाँ META-INF फ़ोल्डर में ".DSA" फ़ाइलें, और फ़ाइलें "SIG-" के साथ शुरुआत हो सकता है) "आरएम-आरएफ मेटा-आईएनएफ" वास्तव में एक बुरा विचार है। यह महत्वपूर्ण निर्देशिका जैसे सेवाओं निर्देशिका को भी हटा देता है। – SkateScout

1

आप वर्ग फ़ाइलों को अलग कर सकते हैं और उन्हें अपने हस्ताक्षर

1

मैं पर https://www.chemaxon.com/forum/viewpost35555.html#35555

  1. ".SF" या जार के अंदर META-INF फ़ोल्डर से ".RSA" विस्तार के साथ फ़ाइलें निकालें एक बेहतर समाधान मिल गया।
  2. मेटा-आईएनएफ/MANIFEST.MF से चेकसम पर हस्ताक्षर हटाएं: प्रत्येक "नाम" और "SHA1-Digest" फ़ील्ड को मेटा-आईएनएफ/MANIFEST.MF से हटा दिया जाना चाहिए।

एक अधिक व्यापक प्रलेखन ओरेकल प्रलेखन पर पाया जा सकता है: https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Signed_JAR_File

संबंधित मुद्दे