2011-10-18 11 views
24

तो, मुझे एलडीएपी के साथ परेशानी हो रही है। मेरे पास एक एकीकरण परीक्षण मामला है जो उम्मीदपूर्वक काम करेगा, लेकिन वर्तमान में यह एसएसएल हैंडशेक के साथ एलडीएपीएस सुरक्षा मुद्दों में चल रहा है।मैं जावा स्थापना में मौजूदा जावा कीस्टोर (.jks) फ़ाइल कैसे आयात करूं?

मैं अपाचे निर्देशिका स्टूडियो के साथ एलडीएपीएस से कनेक्ट करने में सक्षम हूं, और उसने "स्थायी.जेक्स" फ़ाइल में कीस्टोर डाउनलोड किया है।

यह ठीक है, लेकिन मैं अपने एकीकरण परीक्षण चाहता हूं, जो एक जेआरई का उपयोग करके ग्रहण में रहता है, इस कुंजीस्टोर का उपयोग करके एलडीएपी सर्वर से कनेक्ट करने में सक्षम होने के लिए।

मैं इस कीस्टोर को कैसे ले सकता हूं और इसे अपने स्वयं के उपयोग के लिए जेआरई में आयात कर सकता हूं?

उत्तर

34

ठीक है, मेरी प्रक्रिया तो यहाँ था:

ध्यान रखें एक कीस्ट्रोक एकाधिक कुंजियों शामिल कर सकते हैं, तो आप उपनाम वाले अपने प्रमुख को देखने के लिए की आवश्यकता होगी, यहाँ एक सममित कुंजी के साथ एक उदाहरण है

keytool -list -v -keystore permanent.jks - मुझे उपनाम मिला।

keytool -export -alias alias_name -file certificate_name -keystore permanent.jks - मुझे आयात करने के लिए प्रमाण पत्र मिला।

तब मैं Keytool साथ इसे आयात कर सकते हैं:

keytool -import -alias alias_name -file certificate_name -keystore keystore location

@Christian Bongiorno के रूप में कहते हैं उपनाम पहले अपना कुंजी संग्रह में मौजूद नहीं कर सकते हैं।

+2

मुझे यह काम मिल गया लेकिन एक संशोधन के साथ (यदि आप अपना जवाब बदलना चाहते हैं)। आयात प्रक्रिया में, वह हिस्सा जहां आपके पास "उपनाम नाम" है (बीटीडब्लू: एक अंतरिक्ष के साथ एक महान चर नाम नहीं) यह एक उपनाम होना चाहिए जो गंतव्य स्टोर में पहले से मौजूद नहीं है। यदि आप उपनाम निर्दिष्ट नहीं करते हैं तो यह "1" पर डिफ़ॉल्ट होता है - आप –

+2

इंस्टॉल करने से पहले अपने गंतव्य से उपनाम सूचीबद्ध करने के लिए चरण 1 का उपयोग कर सकते हैं अंतिम चरण (आयात) में, मुझे त्रुटि 'keytool त्रुटि मिली: java.io. IOException: पिछले चरण (निर्यात) के बावजूद किस्टोर को छेड़छाड़ की गई थी, या पासवर्ड गलत था, मैं अपने पासवर्ड के साथ सफलतापूर्वक समाप्त कर सकता हूं। क्या आप जानते हैं कि यह क्यों है? –

+0

@ThaiTran भविष्य के पाठकों के लिए, जब कोई प्रमाणपत्र आयात करते हैं तो सुनिश्चित करें कि लक्ष्य प्रमाणपत्र फ़ाइल का पासवर्ड उपयोग करना सुनिश्चित करें, पासवर्ड को पहले स्थान पर बनाने के लिए उपयोग नहीं किया गया है। यह भी ध्यान दें कि कई प्रणालियों पर, जेडीके रूट के स्वामित्व में है। यदि ऐसा है तो आपको keytool -import कमांड रूट के रूप में निष्पादित करने की आवश्यकता है। – BRasmussen

25

एक कुंजीस्टोर लोड करने के लिए, आपको इसे कुंजीस्टोर के प्रकार (शायद jceks), इनपुट इनपुट प्रदान करने और पासवर्ड प्रदान करने की आवश्यकता होगी। ,

KeyStore ks = KeyStore.getInstance(TYPE_OF_KEYSTORE); 
ks.load(new FileInputStream(PATH_TO_KEYSTORE), PASSWORD); 

यह एक KeyStoreException फेंक कर सकते हैं तो आप एक कोशिश ब्लॉक में चारों ओर कर सकते हैं अगर आप चाहें, या फिर से फेंक: तो, तुम इतनी है कि यह लोड कर सकते हैं।

SecretKeyEntry entry = (KeyStore.SecretKeyEntry)ks.getEntry(SOME_ALIAS,new KeyStore.PasswordProtection(SOME_PASSWORD)); 
SecretKey someKey = entry.getSecretKey(); 
+0

तुम मेरी जान बचाई। जब तक मैं आपके उदाहरण में नहीं आया, तब तक कीस्टोर को ठीक से लोड नहीं किया जा रहा था। करुणा है कि मैं आपको इसके लिए 10000 अंक नहीं दे सकता। आपका बहुत बहुत धन्यवाद!! – raspayu

+0

मदद करने में खुशी हुई! आपका धन्यवाद कुछ बिंदुओं से अधिक मूल्यवान है :)। –

12

आप कर सकते हैं थोक आयात एक से दूसरे कीस्टोर से सभी उपनामों:

keytool -importkeystore -srckeystore source.jks -destkeystore dest.jks 
+0

क्या यह आदेश काम कर सकता है? – mike

+0

@ माइक आपका क्या मतलब है? – qwertzguy

+0

यह काम करता है, और वास्तव में अच्छी तरह से: डी – Aspekt

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