पीईएम प्रमाणपत्र श्रृंखला और जावा कीस्टोर की कुंजी का आयात


29

इस विषय के बारे में बहुत सारे संसाधन हैं, लेकिन मुझे ऐसा कोई नहीं मिला जो इस विशेष मामले को कवर करता हो।

मेरे पास 4 फाइलें हैं;

  • privatekey.pem
  • certificate.pem
  • intermediate_rapidssl.pem
  • ca_geotrust_global.pem

और मैं उन्हें एक नए कीस्टोर में आयात करना चाहता हूं।

कुछ साइट डीईआर-प्रारूप का उपयोग करने का सुझाव देती हैं, और उन्हें एक-एक करके आयात करती हैं, लेकिन यह विफल हो जाता है क्योंकि कुंजी मान्यता प्राप्त नहीं है।

एक अन्य साइट ने एक विशेष "ImportKey" -क्लास को आयात के लिए चलाने का सुझाव दिया, और यह तब तक काम किया जब तक मैंने नहीं देखा कि श्रृंखला टूट गई है। प्रमाण पत्र पर श्रृंखला की लंबाई 1 है, मध्यवर्ती और सीए की अनदेखी।

कुछ साइटें PKCS7 का सुझाव देती हैं, लेकिन मैं उससे एक श्रृंखला भी प्राप्त नहीं कर सकता। अन्य PKCS12 प्रारूप का सुझाव देते हैं, लेकिन जहां तक ​​मेरे परीक्षण हैं, जो पूरी श्रृंखला पाने में विफल रहे।

किसी भी सलाह या संकेत का बहुत स्वागत है।

जवाबों:


26

यह सही नहीं हो सकता है, लेकिन मेरे पास मेरे उपयोग के लिए कुछ नोट्स थे keytoolजो मैंने आपके परिदृश्य के लिए संशोधित किए हैं।

  1. मौजूदा जावा कीस्टोर के लिए एक रूट या मध्यवर्ती CA प्रमाणपत्र आयात करें:

    keytool -import -trustcacerts -alias root -file ca_geotrust_global.pem -keystore yourkeystore.jks
    keytool -import -trustcacerts -alias root -file intermediate_rapidssl.pem -keystore yourkeystore.jks 
    
  2. आयात करने से पहले प्रमाण पत्र और निजी कुंजी को एक फ़ाइल में मिलाएं।

    cat certificate.pem privatekey.pem > combined.pem
    

    यह नीचे प्रारूप से मिलता जुलता फ़ाइल होना चाहिए।

    BEGIN CERTIFICATE
    ...
    END CERTIFICATE
    BEGIN RSA निजी कुंजी
    ...
    END RSA निजी कुंजी

  3. किसी मौजूदा जावा keystore में एक हस्ताक्षरित प्राथमिक प्रमाणपत्र और कुंजी आयात करें:

    keytool -import -trustcacerts -alias yourdomain -file combined.pem -keystore yourkeystore.jks
    

2
किसटॉल का कौन सा संस्करण आपको इस तरह से चेन बनाने की अनुमति देता है? यह सिंटैक्स "keytool त्रुटि: java.lang.Exception: प्रमाणपत्र आयात नहीं किया गया है, उर्फ ​​<रूट> पहले से ही मौजूद है" -पोर्ट और -पोर्टपोर्ट दोनों के साथ
ctpenrose

कहना मुश्किल है, बिल्कुल। लेकिन वर्ष / माह को देखते हुए यह जावा 6 होने की संभावना थी? (नाबालिग रिहाई का कोई विचार नहीं है।) आप किस संस्करण का उपयोग कर रहे हैं? त्रुटि पढ़ता है जैसे समस्या कीस्टोर के साथ हो सकती है। ( alias <root> already exists) क्या आप एक नए, खाली कीस्टोर के साथ कोशिश कर सकते हैं?
हारून कोपले

1
Keytool मुझे पहले से मौजूद उपनाम 'रूट' का उपयोग करके एक प्रमाण पत्र आयात करने की अनुमति नहीं देगा। लेकिन मुझे लगता है कि यह एक टाइपो था। यह ध्यान रखना दिलचस्प है कि कीटेल अपने सर्टिफिकेट के लिए एक चेन स्वयं बनाता है जब उसे कीस्टर (किसी भी अलार्म के तहत) में हस्ताक्षरकर्ताओं के प्रमाण पत्र मिलते हैं। जावा टूल "पोर्टेसेल" जावा कीस्टोर के प्रबंधन के लिए आसान है।
हॉटमैन

Keytool इस तरह से काम नहीं करता है, और आपको वर्णित के रूप में एक से अधिक बार एक अन्य आयात करने की अनुमति नहीं देता है। (और हाँ, मैंने कोशिश की है)। ठीक से काम करने वाली किसी चीज़ के लिए नीचे सीनाज़ेकरिब का जवाब देखें।
स्टीव सेडर

1
यह तीन साल पुराना जवाब है। यह पूरी तरह से संभव है कि चीजें बदल गई हैं, लेकिन मैं आपको विश्वास दिलाता हूं कि यह काम किया था (या काम करने के करीब था जैसा कि मैंने संकेत दिया कि यह सही नहीं हो सकता है) फरवरी 2013 के रूप में। कृपया एक संपादन प्रस्तुत करने के लिए स्वतंत्र महसूस करें या मध्यस्थ ध्यान के लिए इसे ध्वजांकित करें।
आरोन कोपले

42

सभी *। Pem फ़ाइलों को एक pem फ़ाइल में सम्‍मिलित करें, जैसे all.pem फिर निजी कुंजी + all.pem के साथ p12 प्रारूप में कीस्‍टोर बनाएँ।

openssl pkcs12 -export -inkey private.key -in all.pem -name test -out test.p12

फिर p12 को jks में एक्सपोर्ट करें

keytool -importkeystore -srckeystore test.p12 -srcstoretype pkcs12 -destkeystore test.jks

धन्यवाद। यह एकमात्र पूर्ण और सही उत्तर है। जैसा कि आपने सुझाव दिया था, यह सिर्फ एक फाइल में सेर्ट्स को एक साथ जोड़ना आसान है।
स्टीव सेडर

यह मेरे लिए एक इलाज की तरह काम किया !! मैंने जावा-आधारित टीएलएस सर्वर से बात करने के लिए नोडज-स्व-हस्ताक्षरित-प्रमाणपत्र-उदाहरण रिपॉजिटरी में उपयोग की जाने वाली चाबियों की एक श्रृंखला को बदलने के लिए इन निर्देशों का उपयोग किया। बहुत - बहुत धन्यवाद!
गेल्डर ज़ामेरेनो

यह सही जवाब है।
sfThomas

8

keytool एक एकल (संयुक्त) फ़ाइल से प्रमाणपत्र + निजी कुंजी आयात करने का एक तरीका प्रदान नहीं करता है, जैसा कि ऊपर प्रस्तावित है। यह ठीक चलता है, लेकिन केवल प्रमाण पत्र आयात किया जाता है, जबकि निजी कुंजी को अनदेखा किया जाता है। आप इसे चेक कर सकते हैं keytool -list -v -keystore yourkeystore.jks- yourdomain प्रविष्टि प्रकार TrustedCertEntry है, PrivateKeyEntry नहीं।

इसलिए प्रारंभिक समस्या को हल करने के लिए, पहले एक पीएससीएस # 12 कीस्टोर को ओपनएसएल (या समान उपकरण) का उपयोग करके बनाना चाहिए, फिर केस्टोर को आयात करें keytool -importkeystore

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.