2012-09-13 11 views
10

जब आपको एपीएनएस के लिए नया प्रमाणपत्र बनाने की आवश्यकता होती है, तो प्रोविजनिंग पोर्टल "विज़ार्ड" हमेशा एक नया सीएसआर बनाने के लिए कदम देता है जिसका मतलब है कि आप एक नई सार्वजनिक/निजी कुंजी भी बनाने की जरूरत है। ये नियंत्रण से बाहर निकलना शुरू कर सकते हैं, तो क्या हर बार एक नया निर्माण करने की बजाय मौजूदा निजी कुंजी से कीचेन एक्सेस में सीएसआर (कोड साइनिंग अनुरोध) बनाने का कोई तरीका है?एपीएनएस के लिए मौजूदा निजी कुंजी से ओएसएक्स कीचेन एक्सेस-जेनरेट सीएसआर (ऐप्पल पुश अधिसूचना सेवा)

धन्यवाद

उत्तर

2

जब आप प्रोविजनिंग प्रोफाइल में जाने के लिए सक्षम/कॉन्फ़िगर पुश सूचनाएं, पहली बात तो उसके द्वारा मांगी एक सीएसआर (कोड प्रमाणपत्र हस्ताक्षर) है।

आप इसे मौजूदा के साथ एक नया निर्माण करने के बजाय कीचेन एक्सेस से निजी कुंजी के साथ उत्पन्न कर सकते हैं।

बस खुला कीचेन पहुंच और उसके बाद के माध्यम से स्क्रॉल और पिछले एक निजी कुंजी खोजने के लिए उस पर तो राइट-क्लिक (दो उंगली से क्लिक) (शायद अपना नाम कहा जाता है) और और अनुरोध कोई प्रमाणपत्र चुनें एक प्रमाणपत्र प्राधिकारी से "bla bla के साथ ब्लै "

मैं सिर्फ उपयोगकर्ता ईमेल पता और सीए ईमेल पते दोनों में एक ही ईमेल पता दर्ज करता हूं, और डिस्क में सहेजा गया चुनता हूं।

फिर

+2

मैं भी ऐसा ही किया इसके बाद के संस्करण के रूप में सुझाव दिया है, लेकिन त्रुटि होता है :("निर्दिष्ट आइटम कीचेन में नहीं मिला।" समस्या क्या हो सकती है? –

+0

यहां एक ही मुद्दा है, लेकिन मुझे पता है कि मैंने पिछले साल कुछ समय काम किया था ... तो सेब ने अपने यादृच्छिक अपडेट में से कुछ में तोड़ दिया ..? – Captnwalker1

+1

@ mysticboy59 इस त्रुटि को इस त्रुटि के बारे में विवरण के लिए देखें: http://stackoverflow.com/questions/16845169/error-when-trying-to-obtain-a-certificate-the- निर्दिष्ट-item-could-not-be- –

26

आमतौर पर अपने .cer फ़ाइलें बनाने के लिए अपलोड करते हैं, तो आप ऐसा कर सकते हैं राइट-क्लिक करके कीचेन पहुंच में एक मौजूदा निजी कुंजी और अनुरोध प्रमाणपत्र चुनने से कोई प्रमाणपत्र प्राधिकरण से "आपका कुंजी के नाम के साथ "

दुर्भाग्यवश, यह "केशिन में निर्दिष्ट आइटम नहीं मिला" के साथ असफल हो जाएगा जब तक कि आप भी में अपने कीचेन में संबंधित सार्वजनिक कुंजी न हो। इसके लिए कोई तकनीकी कारण नहीं है- सर्टिफिकेट साइनिंग अनुरोध (सीएसआर) सिर्फ एक निजी कुंजी से उत्पन्न किया जा सकता है- लेकिन कीचेन एक्सेस इसे समझ में नहीं आता है।

आपके पास दो विकल्प हैं।

निर्यात निजी कुंजी और सीएसआर उत्पन्न मैन्युअल

यह एक त्वरित विकल्प है कि सिर्फ एक सीएसआर कि आप एप्पल को अपलोड कर सकते हैं उत्पन्न होगा है। निर्यात आइटम ... -

  1. कीचेन पहुंच में निजी कुंजी चुनें, फिर फ़ाइल क्लिक करें।
  2. फ़ाइल को कहीं भी .p12 प्रारूप में सहेजें, लेकिन पथ को याद रखें। ये निर्देश मानते हैं कि यह आपकी होम निर्देशिका में है और exported.p12 कहा जाता है। पासवर्ड खाली छोड़ दें।
  3. टर्मिनल खोलें और दर्ज करें:

    openssl req -new -key <(openssl pkcs12 -in ~/exported.p12 -nocerts -nodes -passin pass:"") > new.certSigningRequest 
    

    देखें [1] क्या हो रहा है के बारे में जानकारी के लिए इस पोस्ट के अंत में।

  4. प्रत्येक प्रॉम्प्ट के लिए एंटर दबाएं (ऐप्पल इन मानों की परवाह नहीं करता है)। जब आप समाप्त कर लेंगे, तो आपके पास .certSigningRequest ऐप्पल डेवलपर पोर्टल पर अपलोड करने के लिए उपयुक्त होगा।जब आप संबंधित प्रमाणपत्र डाउनलोड करते हैं, तो यह मूल निजी कुंजी के साथ जुड़ जाएगा।

  5. exported.p12 फ़ाइल हटाएं, क्योंकि इसमें निजी कुंजी सामग्री है।

सार्वजनिक कुंजी को पुन: बनाएं ताकि कीचेन पहुंच खुश

है यह विकल्प एक लंबी अवधि ठीक आप सीधे कीचेन पहुंच से मूल कुंजी से CSRs उत्पन्न दूँगा कि है। ये निर्देश मानते हैं कि आप वर्तमान में कुंजीचैन एक्सेस का उपयोग नहीं कर सकते हैं क्योंकि आप अपनी निजी कुंजी के संबंधित सार्वजनिक संस्करण को याद कर रहे हैं। आप कीचेन एक्सेस में "कीज" श्रेणी पर जाकर और उसी नाम के साथ "निजी कुंजी" और "सार्वजनिक कुंजी" ढूंढकर इसकी जांच कर सकते हैं। निर्यात आइटम ... -

  1. कीचेन पहुंच में निजी कुंजी चुनें, फिर फ़ाइल क्लिक करें।
  2. फ़ाइल को कहीं भी .p12 प्रारूप में सहेजें, लेकिन पथ को याद रखें। ये निर्देश मानते हैं कि यह आपकी होम निर्देशिका में है और exported.p12 कहा जाता है। पासवर्ड खाली छोड़ दें।
  3. टर्मिनल खोलें और दर्ज करें:

    openssl pkcs12 -in ~/exported.p12 -nocerts -nodes | openssl rsa -pubout > public.pem 
    

    देखें [2] क्या हो रहा है के बारे में जानकारी के लिए इस पोस्ट के अंत में।

  4. आयात कीचेन पहुंच में यह सार्वजनिक कुंजी security उपकरण का उपयोग:

    security -v import public.pem -k ~/Library/Keychains/login.keychain 
    

    आप देखना चाहिए "1 कुंजी आयात किया।"

~/Library/Keychains/login.keychain बदलें यदि आप इसे किसी अन्य कीचेन में आयात करना चाहते हैं। (आप देख सकते हैं कि प्रत्येक कीचेन पर - कीचेन सूची कुंजीचैन एक्सेस में संपादित करें)।

  1. ओपन कीचेन एक्सेस और "आयातित सार्वजनिक कुंजी" नामक सार्वजनिक कुंजी का पता लगाएं। इसे डबल-क्लिक करें और अपना नाम बदलकर अपनी मूल निजी कुंजी के समान ही बदलें।
  2. exported.p12 और public.pem हटाएं।

अब आप राइट क्लिक करें एक सीएसआर उत्पन्न करने के लिए "आपका कुंजी का नाम" के साथ मूल निजी कुंजी और अनुरोध चुनें कोई प्रमाणपत्र प्राधिकरण से एक प्रमाण पत्र।

स्पष्टीकरण

[1] यह आदेश, टूट:

openssl req -new # Generate a new certificate signing request 
    -key   # Instead of generating a key, use an existing one 
    <(    # Put the output of the following command in a temporary file 
        # (a Bash feature, not specific to OpenSSL) 
    openssl pkcs12 -in ~/exported.p12 # Read keys from the specified PKCS12 file 
    -nocerts   # Don't output the certificate contained in the file 
    -nodes   # Output the private key from the file 
    -passin pass:"" # The password for the container is blank 
) 
> new.certSigningRequest # Write the generated CSR to a file 

[2] दूसरा आदेश, टूट:

openssl pkcs12 -in ~/exported.p12 # Read keys from the specified PKCS12 file 
    -nocerts -nodes     # Output only the private key, no certificates 
| openssl rsa -pubout    # Compute the public key from a private key 
> public.pem      # Write the public key to a file 
+0

मिला महान जवाब। बहुत सारे विवरण और स्पष्टीकरण। मुझे जिस चीज की जरूरत थी। – Glenn

+0

मुझे चरण 5 में कोई समस्या थी: मेरे कस्टम कीचेन में आयात की गई सार्वजनिक कुंजी का नाम बदल नहीं सका। मुझे इसे सत्र की चाबी पर ले जाना पड़ा, इसका नाम बदलें, और फिर इसे वापस ले जाएं। – Julien