2012-08-15 19 views
6

मैं SSL का उपयोग कर मुसीबत हो रहा है, के रूप में मैं अपने कीस्ट्रोक से संबंधित निम्न त्रुटि हो रही है (स्वयं बनाया और स्व-हस्ताक्षरित प्रति Keytool का उपयोग कर: http://developer.android.com/tools/publishing/app-signing.html):"कुंजी स्टोर का गलत संस्करण" त्रुटि। मैं संस्करण = 1 कीस्टोर प्रमाणपत्र कैसे बना सकता हूं?

08-14 20:55:23.044: W/System.err(5430): java.io.IOException: Wrong version of key store. 08-14 20:55:23.060: W/System.err(5430): at org.bouncycastle.jce.provider.JDKKeyStore.engineLoad(JDKKeyStore.java:812) ...

JDKKeyStore.java वर्ग में फेंक दिया त्रुटि पैदा होती है

Blockquote From JDKKeyStore.java:
if (version != STORE_VERSION) { if (version != 0) { throw new IOException("Wrong version of key store."); } }

Blockquote

इस मामले STORE_VERSION = 1 में, और मेरे संस्करण = 3 प्रमाण पत्र कुंजीस्टोर मैं बनाया है द्वारा आयोजित के विवरण को पढ़ने के आधार पर: निम्नलिखित कोड में। मुझे नहीं पता कि वर्जनस्टोर को वर्जन = 1 सर्टिफिकेट कैसे बनाया जाए।

मैं यह उत्तर उपयोगी पाया: wrong version keystore when doing https call

लेकिन यह निम्न पैरामीटर का उपयोग कर कुंजीस्टोर बनाने के लिए कहता है:

-storetype BKS
-provider org.bouncycastle.jce.provider.BouncyCastleProvider
-providerpath /path/to/bouncycastle.jar

हालांकि, जब मैं (Keytool बनाने के लिए पर टर्मिनल एप्लिकेशन का उपयोग करने की कोशिश मैक) इन मानकों का उपयोग कर:

keytool -genkeypair -v -alias androiddebugkey -keyalg RSA -keysize 2048 -validity 10000 -keypass android -keystore /Users/djames/dropbox/bc146keystore/debug.keystore -storepass android -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider –providerpath /Users/djames/dropbox/bc146keystore/

(जहां/उपयोगकर्ताओं/Djames/ड्रॉपबॉक्स/bc146keystore/है टी bcprov-jdk16-146.jar)

मैं निम्नलिखित त्रुटि मिलती है: वह उछाल वाले महल जार करने के लिए पथ

keytool error: java.lang.RuntimeException: Usage error, ?providerpath is not a legal command java.lang.RuntimeException: Usage error, ?providerpath is not a legal command at sun.security.tools.KeyTool.parseArgs(KeyTool.java:375) at sun.security.tools.KeyTool.run(KeyTool.java:171) at sun.security.tools.KeyTool.main(KeyTool.java:166)

मुझे समझ नहीं आता क्या यह मुझे बता रहा है। अगर मैं का उपयोग करें: Keytool -Help यह मुझसे कहता है कि निम्नलिखित -genkeypair विकल्प के लिए मान्य विकल्प हैं:

-genkeypair [-v] [-protected] [-alias ] [-keyalg ] [-keysize ] [-sigalg ] [-dname ] [-validity ] [-keypass ] [-keystore ] [-storepass ] [-storetype ] [-providername ] [-providerclass [-providerarg ]] ... [-providerpath ]

लेकिन ओरेकल डॉक्स जावा संस्करण 6 में है कि मैं (http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html) का उपयोग कर रहा
यह मुझसे कहता है कि ये विकल्प हैं:

-genkeypair {-alias alias} {-keyalg keyalg} {-keysize keysize} {-sigalg sigalg} [-dname dname] [-keypass keypass] {-validity valDays} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

-providerpath option शामिल नहीं है जो। विसंगति क्यों? (मैं -providerpath विकल्प का उपयोग नहीं करते हैं, तो मैं एक अज्ञात वर्ग अपवाद विकल्प पर मिलती है: "-providerclass org.bouncycastle.jce.provider.BouncyCastleProvider" ...)

जब मैं गूगल: Keytool -providerpath
मैं इस को हल करने के लिए उपयोगी कुछ भी नहीं मिलता है।

मुझे यकीन नहीं है कि मेरी कीटोल समस्या को हल किए बिना मेरी कीस्टोर संस्करण समस्या को कैसे हल किया जाए। किसी भी सुझाव की सराहना की।

जिम

(Mac OSX 10.6.8 if relevant) 
+0

यह प्रश्न पहले ही यहां दिया गया था: http://stackoverflow.com/a/33197845/5459467 – Cukic0d

उत्तर

1

संस्करण बेमेल कुंजी संग्रह संस्करण, नहीं प्रमाणपत्र संस्करण (जो एक v3 X.509 प्रमाणपत्र के लिए मूल्य 2 होना चाहिए) के लिए है।

जेडीके का कौन सा संस्करण आपने keytool का उपयोग किया था? क्या आपने कमांड का पूरा पथ निर्दिष्ट किया है, या अपने PATH में क्या उपयोग किया था? क्या आप वाकई जेकेएस कुंजी स्टोर का उपयोग कर रहे हैं, न कि जेसीईके स्टोर?

+0

आपके विचारों के लिए बहुत बहुत धन्यवाद। – gymshoe

+0

1) सुनिश्चित नहीं है कि मैं उपयोग कर रहा हूं keytool के संस्करण को कैसे बताना है। मैं जावा एसई रनटाइम पर्यावरण = 1.6.0_33 का उपयोग कर रहा हूं, और संभावित रूप से संबंधित जेडीके जो इसके साथ जाता है (क्योंकि मैंने कोई अलग स्थापना नहीं की है जिसे मैं जानता हूं)। मेरे $ PATH के आधार पर मैं उपयोग कर रहा हूं कि keytool निम्नलिखित उपनिर्देशिका से बाहर आता है: सिस्टम/लाइब्रेरी/JavaVM.framework/संस्करण/ए। मुझे नहीं पता कि यह क्यों नहीं निकलता है: .../JavaVM.framework /Versions/1.6.0 उपनिर्देशिका ... – gymshoe

+0

2) मैंने पथ निर्दिष्ट नहीं किया बल्कि डिफ़ॉल्ट का उपयोग किया। जैसा कि ऊपर बताया गया है, डिफ़ॉल्ट पथ में keytool मिलेगा: सिस्टम> लाइब्रेरी/JavaVM.framework/संस्करण/ए। जब मैं पथ निर्दिष्ट करता हूं और "सिस्टम> लाइब्रेरी/JavaVM.framework/संस्करण/1.6.0/keytool -help" चलाता हूं, तो यह मुझे मेरे डिफ़ॉल्ट कीटोल के रूप में एक ही डिस्प्ले दिखाता है, यानी -genkeypair -providerpath के लिए विकल्प शामिल करता है। – gymshoe

14

मेरी समस्या उछाल वाले महल के एक संस्करण का उपयोग कर रही थी जो बहुत नई थी। मुझे 146 का उपयोग करना पड़ा - बाद में और उसने मुझे यह त्रुटि दी।

+0

वही है, संस्करण 148 मुझे एक ही त्रुटि देता है, बहुत बहुत धन्यवाद! –

+0

यह काम करता है, लेकिन मुझे लगता है कि ग्रहण एक संस्करण (148) क्यों बंडल करता है जो काम नहीं करता है ... – Michael

+0

संस्करण 147 मुझे एक ही त्रुटि दे रहा था। धन्यवाद –

0

रायन उत्तर को पूरा करने के लिए, क्योंकि मुझे यह पता लगाने के लिए खोदना पड़ा कि बाउंसी कैसल 1.46 के साथ बीकेएस कैसे उत्पन्न करें, आप बीकेएस उत्पन्न करने के लिए Portecle का उपयोग कर सकते हैं।

  1. डाउनलोड Boucycastle Provider 1.46
  2. स्थापित करें या इसे अनज़िप।
  3. अपनी पोर्टेक इंस्टॉल निर्देशिका में bcprov.jar बदलें (उदाहरण: C:\Program Files (x86)\Portecle\bcprov.jar)। वही नामकरण आवश्यक है।
  4. पोर्टटेकल को पुनरारंभ करें और अपने बीकेएस ट्रस्टस्टोर उत्पन्न करें।

यह here समझाया गया।


संपादित:

Portecle 1.8 के बाद से, आप बीकेएस-V1 प्रकार का उपयोग कर सकते हैं अपने truststore उत्पन्न करने के लिए बिना bcprov.jar को बदलने के लिए।

आप New keystore पर क्लिक करने के बाद इसे चुन सकते हैं या मेनू Tools -> Change KeyStore Type के माध्यम से प्रकार बदल सकते हैं।

+1

पोर्टेक v1.8 के बाद से आप "न्यू कीस्टोर" संवाद में बस बीकेएस-वी 1 का चयन कर सकते हैं या "टूल्स -> चेंज कीस्टोर टाइप" के माध्यम से बीकेएस और बीकेएस-वी 1 के बीच कनवर्ट कर सकते हैं। जार को बदलने की जरूरत नहीं है। – Omikron

+0

मेरे पास एक पुराना संस्करण था, जानना अच्छा था। –

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