निजी कुंजी के साथ। Pfx फ़ाइल को कीस्टोर में कैसे बदलें?


107

मुझे Android एप्लिकेशन ( .apk) पर हस्ताक्षर करने की आवश्यकता है ।
मेरे पास .pfxफाइल है। मैंने इसे .cerइंटरनेट एक्सप्लोरर के माध्यम से फाइल करने के लिए परिवर्तित किया और फिर केटूल .cerका .keystoreउपयोग करके परिवर्तित किया । तब मैंने .apkजारसिग्नर के साथ हस्ताक्षर करने की कोशिश की है, लेकिन यह कहता है कि .Stystore एक निजी कुंजी को संतुष्ट नहीं करता है।

मैं क्या गलत कर रहा हूँ?


यह उपयोगी हो सकता है: मैं Windows stackoverflow.com/questions/5488339/… के
पीटर बारबनागा

जवाबों:


259

JDK 1.6 या बाद का उपयोग करना

यह जस्टिन द्वारा टिप्पणी में बताया गया है कि केवल कीटलूल निम्नलिखित कमांड का उपयोग करने में सक्षम है (हालांकि केवल जेडीके 1.6 और बाद में):

keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 
-destkeystore clientcert.jks -deststoretype JKS

JDK 1.5 या नीचे का उपयोग करना

ओपनएसएसएल यह सब कर सकता है। JGuru पर यह उत्तर सबसे अच्छा तरीका है जो मैंने अब तक पाया है।

सबसे पहले सुनिश्चित करें कि आपके पास ओपनएसएसएल स्थापित है। कई ऑपरेटिंग सिस्टम पहले से ही इसे स्थापित कर चुके हैं जैसा कि मैंने मैक ओएस एक्स के साथ पाया।

निम्न दो आदेश pfx फ़ाइल को एक स्वरूप में परिवर्तित करते हैं जिसे Java PKCS12 कुंजी स्टोर के रूप में खोला जा सकता है:

openssl pkcs12 -in mypfxfile.pfx -out mypemfile.pem
openssl pkcs12 -export -in mypemfile.pem -out mykeystore.p12 -name "MyCert"

ध्यान दें कि दूसरे कमांड में प्रदान किया गया नाम नए कुंजी स्टोर में आपकी कुंजी का उपनाम है।

आप निम्न कमांड के साथ जावा कीटूल उपयोगिता का उपयोग करके कुंजी स्टोर की सामग्री को सत्यापित कर सकते हैं:

keytool -v -list -keystore mykeystore.p12 -storetype pkcs12

अंत में अगर आपको जरूरत है तो आप इसे JKS कुंजी स्टोर में बदल सकते हैं।

keytool -importkeystore -srckeystore mykeystore.p12 -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS

28
सभी तीन चरणों की कोई आवश्यकता नहीं है, बस चलाएं: keytool -importkeystore -srckeystore mykeystore.pxf -destkeystore clientcert.jks -srcstoretype pkk12 -deststoretype JKS
JustinMorris

मुझे लगता है कि कीटल के पुराने संस्करण आपको ऐसा नहीं करने देंगे। मुझे याद है कि 8 साल पहले मुझे ओपनस्लैम चलाना होगा, लेकिन अब ओरेकल जेडडीके 6 और 7 में केटूल के साथ, यह जस्टिन की तरह ही एक आकर्षण की तरह काम करता है।
डेविड ब्रॉसार्ड

2
कृपया ध्यान दें कि मैंने उस उत्तर को जस्टिन के एक साल पहले और अधिक विस्तार के साथ सरल रूप में दिया।
gjpc

@gjpc नोटेड। आपका उत्तर बहुत ही पूर्ण है और बहुत सारे वोटों का हकदार है :)
मिकाद

यह वास्तव में एक महान जवाब है और इसने मुझे शोध के दिनों के बाद बचाया। यह जवाब वास्तव में कई और अपवित्रों का हकदार है। धन्यवाद महोदय।
मिथुल

22

jarsigner अपने जार को साइन करने के लिए आपकी pxx फाइल को कीस्टॉर के रूप में उपयोग कर सकता है। सुनिश्चित करें कि जब आप इसे निर्यात करते हैं तो आपकी pfx फ़ाइल में निजी कुंजी और प्रमाणित श्रृंखला होती है। अन्य प्रारूपों में बदलने की कोई आवश्यकता नहीं है। चाल को आपके pfx फ़ाइल का उपनाम प्राप्त करना है :

 keytool -list -storetype pkcs12 -keystore your_pfx_file -v | grep Alias

एक बार जब आपका उपनाम हो, तो हस्ताक्षर करना आसान है

jarsigner.exe -storetype pkcs12 -keystore pfx_file jar_file "your alias"

उपरोक्त दो कमांड आपको pfx निर्यात में निर्दिष्ट पासवर्ड के लिए संकेत देंगे। आप करना चाहते हैं अपना पासवर्ड स्पष्ट पाठ में उपयोग में मौज-मस्ती -storepass से पहले स्विच -keystore स्विच

एक बार हस्ताक्षर करने के बाद, अपने काम की प्रशंसा करें:

jarsigner.exe -verify -verbose -certs  yourjarfile


22

मुझे यह पृष्ठ मिला जो बताता है कि JFX (Java Key Store) में PFX को कैसे आयात किया जाए:

keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME

3
इसका पूरा जवाब होना चाहिए!
JustAGuy

मैं इस तरह के एक उत्तर की तलाश में था - उपनाम नाम के साथ
user3437460

मुझे एक समस्या है, pfx में पासवर्ड नहीं है, इसलिए -srcstorepassमेरी समस्या है। यह PFX विंडोज के लिए एक LetsEncrypt क्लाइंट द्वारा बनाया गया है
FiruzzZ

2

आपकी PFX फ़ाइल में निजी कुंजी होनी चाहिए। अपनी PFX फ़ाइल (जैसे OpenSSL का उपयोग करके) से सीधे निजी कुंजी और प्रमाणपत्र निर्यात करें और उन्हें अपने जावा कीस्टोर में आयात करें।

संपादित करें

अग्रिम जानकारी:

  • यहां विंडोज के लिए ओपनएसएसएल डाउनलोड करें
  • निजी कुंजी निर्यात करें: openssl pkcs12 -in filename.pfx -nocerts -out key.pem
  • निर्यात प्रमाणपत्र: openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
  • जावा कीस्टोर में निजी कुंजी और प्रमाण पत्र का उपयोग करके आयात करें keytool

क्या आप मुझे बता सकते हैं कि मैं कैसे कर सकता हूं। मैं keytool का उपयोग करके कर सकते हैं।
साद अल अब्दुल्ला

1
छोटे जोड़: आपको निजी ky निर्यात करते समय अंत में -nodes जोड़ना होगा
morgan_il

2

जस्टिन (ऊपर) सटीक है। हालाँकि, यह ध्यान रखें कि आप किसके आधार पर प्रमाणपत्र प्राप्त करते हैं (मध्यवर्ती CA, रूट CA शामिल है या नहीं) या pfx कैसे बनाया / निर्यात किया जाता है, कभी-कभी वे प्रमाण पत्र श्रृंखला को याद नहीं कर सकते हैं। आयात के बाद, आपके पास PrivateKeyEntry प्रकार का प्रमाण पत्र होगा, लेकिन 1 की लंबाई वाली श्रृंखला के साथ।

इसे ठीक करने के लिए, कई विकल्प हैं। मेरे दिमाग में आसान विकल्प IE में pfx फ़ाइल को आयात और निर्यात करना है (श्रृंखला के सभी प्रमाण पत्रों को शामिल करने का विकल्प चुनना)। IE में प्रमाणपत्रों का आयात और निर्यात प्रक्रिया बहुत आसान और अच्छी तरह से प्रलेखित होनी चाहिए।

एक बार निर्यात होने पर, कीस्टोर को आयात करें जैसा कि जस्टिन ने ऊपर बताया है। अब, आपके पास प्रकार का प्रमाणपत्र होगा जिसमें PrivateKeyEntry का प्रमाण पत्र और 1 से अधिक की प्रमाणपत्र श्रृंखला की लंबाई होगी।

यदि आप ऊपर नहीं करते हैं तो कुछ .Net आधारित वेब सेवा क्लाइंट त्रुटि (विश्वास संबंध स्थापित करने में असमर्थ) है।


यह IE11 पर काम नहीं करता है। यह प्रमाण पत्र श्रृंखला में शामिल करने में विफल होने के बावजूद मैं इसे बता रहा हूं। मुझे पता है कि यह अतीत में काम किया है।
ब्रायन नॉबलुच

0

यदि आप JDK 1.5 के साथ काम करते हैं या Keytool उपयोगिता से नीचे का -importkeystoreविकल्प नहीं होगा ( JDK 1.5 keytool दस्तावेज़ीकरण देखें ) और MikeD द्वारा समाधान केवल .pfxनए JDK (1.6 या इसके बाद के संस्करण) वाली मशीन पर स्थानांतरित करके उपलब्ध होगा ।

JDK 1.5 या उससे नीचे (यदि आपके पास Oracle WebLogic उत्पाद है) में एक अन्य विकल्प, इस Oracle दस्तावेज़ के निर्देशों का पालन करना है : PFX और PEM सर्टिफिकेट फॉर्मेट्स का उपयोग कीस्टोर्स के साथ करना । यह .pemप्रारूप में रूपांतरण का वर्णन करता है , इस पाठ प्रारूप से प्रमाण पत्र की जानकारी कैसे निकालें, और इसे उपयोगिता के .jksसाथ प्रारूप में आयात java utils.ImportPrivateKeyकरें (यह वेबलॉगिक उत्पाद के साथ शामिल उपयोगिता है)।

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