2013-08-16 11 views
5

मैं कुछ दिनों के लिए इसके खिलाफ अपने सिर को टक्कर लगी हूं और पूरी तरह से स्टंप हो गया हूं। यहाँ प्रक्रिया इस प्रकार हैःjarsigner-Javaify 6 में काम करता है लेकिन जावा 7

  1. मैं टाइको का उपयोग कर
  2. Maven के भीतर मैं Maven-jarsigner-प्लगइन मेरी कीस्ट्रोक का उपयोग कर जार हस्ताक्षर करने के लिए सेट हो जाने पर Maven 3 के माध्यम से निर्माण करने के लिए एक ग्रहण प्लगइन परियोजना मिल गया है (देखें कुंजीस्टोर विवरण)
  3. मैं एक कोड हस्ताक्षर प्रमाणपत्र मिल गया है कि मेरे कुंजीस्टोर में Thawte द्वारा हस्ताक्षरित किया गया है के लिए नीचे दिए गए

मैं 'jarsigner -verify' उस पर से लक्ष्य/* और चलाने के किसी भी हस्ताक्षर किए जार फ़ाइल ले जा सकते हैं । ऐसा ही होता है:

#java 6 on a VM 
[email protected]:/vagrant/com.example.plugins.eclipse/target$ jarsigner -verify com.example.eclipse-0.1.3-SNAPSHOT.jar 
jar verified. 

अगला:

#java 7 on a completely different vm 
[email protected]:/vagrant$ jarsigner -verify com.example.eclipse-0.1.3-SNAPSHOT.jar 
jar verified. 

Warning: 
This jar contains entries whose certificate chain is not validated. 

Re-run with the -verbose and -certs options for more details. 

मैं, दोनों Java6 और Java7 स्थापित के साथ एक मशीन का उपयोग करने के लिए नहीं ख्याल रखना है तो यह this issue

मैं भी डॉन नहीं है ' टी मानते हैं कि यह this issue में वर्णित एल्गोरिदम आधारित है, क्योंकि मैं जावा 6 या जावा 7 या का उपयोग कर प्रोजेक्ट पर हस्ताक्षर कर सकता हूं, हमेशा जावा 6 और में सत्यापित नहीं होता जावा 7 में सत्यापित करता है, भले ही मैंने किस पर्यावरण के साथ जार पर हस्ताक्षर किए हों।

यहाँ -List

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 3 entries 

root, Aug 11, 2013, trustedCertEntry, 
Certificate fingerprint (SHA1): 91:C6:D6:EE:3E:8A:C8:63:84:E5:48:C2:99:29:5C:75:6C:81:7B:81 
intermediate, Aug 11, 2013, trustedCertEntry, 

मुझे विश्वास है कि इस प्रमाणपत्र श्रृंखला मुद्दा है क्योंकि मैं जावा 7 पर निम्न आदेश का उपयोग कर जार को सत्यापित करने में सक्षम हूँ है Keytool के उत्पादन में है:

jarsigner -verify -keystore keystore com.example.eclipse-0.1.3-SNAPSHOT.jar 

स्पष्ट रूप से मेरे पास मेरी कीस्टोर फ़ाइल का उपयोग करके मेरे प्लगइन का हर उपयोगकर्ता नहीं हो सकता है, इसलिए यह कोई समाधान नहीं है। हालांकि, यह मजबूती देता है कि मेरे पास जावा 7 में एक प्रमाण श्रृंखला श्रृंखला है। विचार?

+0

क्या आप -verbose और -certs विकल्पों का उपयोग करके फिर से चला सकते हैं और आउटपुट पोस्ट कर सकते हैं? – sErVerdevIL

उत्तर

3

महीने बाद मुझे अपने स्वयं के प्रश्न का उत्तर पता चला। एक ही मुद्दे के साथ किसी और के लिए, यहाँ मैं क्या किया है:

  1. अपने मौजूदा निजी कुंजी कन्वर्ट और सीए (यह आवश्यक है के बाद से जावा के Keytool के प्रत्यक्ष आयात की अनुमति नहीं है एक PKCS12 स्वरूप में प्रमाणपत्र पर हस्ताक्षर किए यह चीज़ें)। यह एक एकल openssl आदेश में पूरा किया जा सकता:

    openssl pkcs12 -export -name signing -in signing.cert -inkey myPrivateKey.key -out keystore.p12 
    

    कहाँ पर हस्ताक्षर मेरी PKCS12 कीस्टोर का नाम है, signing.cert मेरी सीए है आपूर्ति प्रमाणपत्र पर हस्ताक्षर किए, और (जाहिर है) myPrivateKey.key मेरी निजी कुंजी थी प्रमाण अनुरोध पर हस्ताक्षर करने के लिए प्रयोग किया जाता है।

  2. आयात एक जावा कुंजीस्टोर में इस नव निर्मित कुंजीस्टोर:

    keytool -importkeystore -destkeystore keystore -srckeystore keystore.p12 -srcstoretype pkcs12 -alias signing 
    
  3. कुंजीस्टोर में अपने सीए के जावा प्रमाणपत्र आयात करें। मुझे बिल्कुल यकीन नहीं है कि यह जादू क्या करता है लेकिन इसके बिना प्रमाण श्रृंखला का पालन नहीं किया जाता है (यहां तक ​​कि जब मैन्युअल रूप से इंटरमीडिएट कॉर्ट जोड़ते हैं)। यह प्रमाणपत्र आम तौर पर उस ईमेल के माध्यम से प्रदान किया जाता है जहां आपका हस्ताक्षर प्रमाणपत्र आ गया है। हमारे उद्देश्यों के लिए इसे sign.pkcs7 कहा जाता है।

    keytool -importcert -file signing.pkcs7 -keystore keystore -v -alias signing 
    

    आपको जावा कीस्टोर बनाने के दौरान उपयोग की जाने वाली कीस्टोर पासवर्ड दर्ज करना होगा।

  4. निर्माण के दौरान अपनी परियोजनाओं पर हस्ताक्षर करने के लिए मेवेन-जेर्सिग्नेर-प्लगइन (या जो भी स्वचालन आवश्यक है) का उपयोग करें।

4

यह काम करता है। आपको दोनों मामलों में "जार सत्यापित" मिलता है => दोनों मामलों में जार सत्यापित है। इसका मतलब है कि जार पर हस्ताक्षर किए जाने का दावा किया गया था, और बाद में जार को छेड़छाड़ नहीं की गई है।

जावा 7 चेतावनी प्रिंट कर रहा है।

+1

जब मैं प्रमाण पत्र को सत्यापित नहीं किया जा सकता है तो मैं इसे काम नहीं करता हूं। –

+0

'jarsigner -verify' मेरे लिए काम करता है, उस संदेश के बिना। आपकी प्रमाणपत्र श्रृंखला आपके लिए अलग-अलग समस्या नहीं हो सकती है। – EJP

+1

प्रमाण श्रृंखला एक अलग मुद्दा नहीं है, यह * मुद्दा * है। Jarsigner उपकरण एक सभ्य सूचना निशान देने पर बेकार है और मैं इसे डीबग करने में सुझावों की तलाश में हूं। –

8

आपकी समस्या का उत्तर यह है कि आप सूर्य का उपयोग कर रहे हैं क्योंकि आपके कीस्टोर प्रदाता जावा 6 को ओरेकल क्रयिंग सन से पहले रिलीज़ किया गया था और जावा 7 जारी किए जाने के बाद और कई सूर्य पैकेज अब हटा दिए गए हैं। आप यह here सत्यापित कर सकते हैं।

ओरेकल ने बहिष्कृत सूर्य कीस्टोर प्रदाता के लिए समर्थन रखा है, लेकिन अब यह आवश्यक है कि एक चेतावनी जारी की जाए जैसे कि आपने किसी भी बहिष्कृत सुविधा का उपयोग किया हो।

ओरेकल द्वारा लिखित एक विस्तृत विस्तृत विवरण है कि आपको अपनी वेबसाइट पर JCA Documentation में सुरक्षा हस्ताक्षर के लिए सूर्य प्रदाता का उपयोग क्यों नहीं करना चाहिए।

एकमात्र चीज जो "ठीक" करेगी, वह आपके कीस्टोर प्रदाता को और ऑरैकल स्वीकार्य रूप से बदलना है, आप उन्हें ऊपर से जुड़े एक ही सुरक्षा दस्तावेज में पा सकते हैं।

उम्मीद है कि मदद करता है।

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