2010-10-05 10 views
13

के बिना नए कीचेन से किसी ऐप पर कोड हस्ताक्षर करने के लिए प्राधिकरण कैसे जोड़ूं, मैं किसी विशेष प्रमाणपत्र के साथ आईफोन ऐप्स बनाने की प्रक्रिया को स्वचालित करने की कोशिश कर रहा हूं। तो कल्पना करें कि अलग-अलग उपयोगकर्ताओं ने सिस्टम में अपना प्रमाणपत्र अपलोड किया है और यह तुरंत कोड साइन के लिए उपलब्ध था। मैं बिना किसी बातचीत के ऐसा करना चाहता हूं। मैं अलग-अलग उपयोगकर्ता प्रमाणपत्रों के साथ सिस्टम या लॉगऑन कीचेन को अव्यवस्थित नहीं करना चाहता हूं। इस अंत में मेरे पास है:मैं किसी भी मानव इंटरैक्शन

  • ने एक्ससीडीईई में एक निर्माण के लिए कोड हस्ताक्षर की आवश्यकता के लिए आवश्यकता को बंद कर दिया।
  • xcodebuild कमांड लाइन टूल
  • के माध्यम से एक आवेदन पत्र बनाने के लिए एक गहरे लाल रंग का स्क्रिप्ट विकसित स्वचालित रूप से अपने सिस्टम
  • का एक उपयोगकर्ता एक स्क्रिप्ट लिखी एक निर्मित iphone अनुप्रयोग पर हस्ताक्षर कोड करने के लिए एक नया कीचेन बनाने के लिए स्क्रिप्ट बनाने के।

सब कुछ काम करता है, लेकिन जब कोडिन प्रोग्राम साइन अनुमति का उपयोग करने का प्रयास करता है तो मुझे मैन्युअल रूप से एंटर दबाए जाने की आवश्यकता होती है। मेरे कीचेन सभी अनलॉक हैं। अजीब रूप से यह काम करता है अगर मैं कीचेन को डिफ़ॉल्ट कीचेन बना देता हूं, लेकिन यह स्केलेबल नहीं है यानी मुझे किसी भी समय एक निर्माण प्रक्रिया हो सकती है।

जब मैं मैन्युअल रूप से हमेशा कि इस प्रक्रिया के लिए अनुमति देने पर क्लिक करें, मैं अपने कीचेन डंप में एक प्रविष्टि है कि इस तरह दिखता है मिलती है:

entry 1: 
    authorizations (6): decrypt derive export_clear export_wrapped mac sign 
    don't-require-password 
    description: privateKey 
    applications (2): 
     0: /usr/bin/codesign (OK) 

तो मैं सोच रहा हूँ कि मैं करने के लिए सुरक्षा में अधिकृत आदेश का उपयोग करने की आवश्यकता है उन अनुमतियों के लिए pre-autorize codeign। सुरक्षा आदमी पृष्ठ बहुत खराब है। मुझे ऐसा आदेशों का उपयोग करके काम करने के लिए प्रतीत नहीं होता है:

सुरक्षा -v अधिकृत -उवे चिह्न |/usr/bin/codeign [ऐप को इंगित करने वाले कोड साइन वर्र्स और एक विशिष्ट कीचेन]

क्या किसी के पास कोई विचार है?

उत्तर

4

अपने सिस्टम पर, एक बार कीचेन

सुरक्षा अनलॉक-कीचेन

मैं सिर्फ xcodebuild दोनों निर्माण और कोड हस्ताक्षर करने के लिए जाने के साथ अनलॉक हो गया है।

यदि आपके कीचेनिन अनलॉक हैं, तो उपर्युक्त कॉल का उपयोग करने के लिए आवश्यक नहीं होना चाहिए।

आप सुरक्षा के निष्पादन-साथ-विशेषाधिकार आदेश भी जांचना चाहेंगे।

+1

सुरक्षा अनलॉक -पी

+0

मैं सभी के साथ कीचेन अनलॉक कर रहा हूं। मैंने जो खोजा है वह यह है कि यदि मैं पहले एक्सकोड में जाता हूं और एक ही निर्माण करता हूं, तो उसके बाद सभी चीजें अन्य कुंजीपटलों पर भी ठीक काम करने लगती हैं। तो अब मैं: 1. एक नया कीचेन बनाएं (मेरे पास एकाधिक उपयोगकर्ता हैं इसलिए एक कीचेन में सबकुछ प्रबंधित करना बहुत मुश्किल है) 2. इसे डिफ़ॉल्ट कीचेन के रूप में सेट करें 3. इसे अनलॉक करें। 4. कोड हस्ताक्षर के साथ एक्सकोड बिल्ड के माध्यम से और एक xcconfig फ़ाइल के माध्यम से सेट सेट के माध्यम से बनाएँ। यह एक अच्छा समाधान नहीं है बी/सी यह नए सर्वर स्थापित करने के लिए एक दर्द है। मैं निष्पादन के साथ-साथ निजीकरण का पता लगाऊंगा, लेकिन मुझे सुरक्षा कमांड प्रलेखन भयानक लगता है। – cmos

11

यदि आप अपने प्रमाणपत्र को अपने कुंजीपटल में ए-ए के साथ आयात करते हैं तो यह उस प्रमाणपत्र का अनुरोध करने का प्रयास करने वाले सभी कार्यक्रमों तक पहुंच की अनुमति देगा। यह बहुत सुरक्षित नहीं है लेकिन काम करता है। आप इसे किसी विशेष ऐप तक सीमित करने के लिए -T का भी उपयोग कर सकते हैं। मैन सुरक्षा में पाए गए आयात परम को देखो।

+0

यह बहुत अच्छा काम करता है, खासकर मेरी स्थिति में जहां विभिन्न ग्राहकों के लिए हर समय बदलते हैं। –

+0

अगर मैं आपको 10 बार वोट दूंगा तो मैं करूँगा! जब मैंने कोडिन चरण तोड़ा तो आयात मंच पर वापस जाने के बारे में सोचा नहीं था ... धन्यवाद! –

1

सिस्टम कीचेन में लॉग इन कीचेन से प्रमाणपत्रों की प्रतिलिपि मेरे मामले में अच्छी तरह से काम करती है, और नतीजतन आपको कोई कमांड लाइन अनलॉक करने की आवश्यकता नहीं है।

4

मैं यहां उत्तर पूल में जोड़ना चाहता हूं, लेकिन उस प्रश्न का हिस्सा फिर से खोलना जो मुझे नहीं लगता था।

निम्न आदेश का आयात एक पहचान (प्रमाणपत्र + निजी कुंजी) और यह बताता है कि यह "हमेशा अनुमति दें" चाहिए यह करने के लिए कोड पर हस्ताक्षर का उपयोग (एक बटन क्लिक करने के लिए उपयोगकर्ता को बढ़ावा देने से रोकता है कीचेन पहुंच चेतावनी):

`security import Targets/CurrentTarget/Certificate.p12 -k #{KEYCHAIN} -P "#{cert_pwd}" -T /usr/bin/codesign` 

यह आदेश नहीं बल्कि सिर्फ कोड पर हस्ताक्षर करने के बजाय, सभी आवेदनों उपयोग की अनुमति देता:

security import Targets/CurrentTarget/Certificate.p12 -k #{KEYCHAIN} -P "#{cert_pwd}" -A

इन आदेशों संवादों कि हर बार जब आप अपने Keych में एक निजी कुंजी का उपयोग पॉप अप का ख्याल रखना होगा की किसी भी ऐन। फिर भी, वे उसी चेतावनी का ख्याल नहीं रखेंगे जो पहली बार पॉप अप करता है जब आप निजी कुंजी का उपयोग करने की अनुमति का अनुरोध करते हैं। यह अलर्ट पहले उपयोग पर दिखाई देगा और आपको हमेशा अनुमति देने, अस्वीकार करने या अनुमति देने के लिए कहेंगे। इसके बाद हर बार (यदि आप उपरोक्त -T या -A विकल्पों का उपयोग करते हैं, तो आपके कुंजीपटल में कुंजी बनी रहती है) आपको एक संवाद दिखाई नहीं देगा।

मेरा प्रश्न है: आप पहले उपयोग पर दिखाई देने वाली चेतावनी को कैसे हटा सकते हैं?

मैंने हमेशा अनुमति बटन को टैप करने के लिए ऐप्पल स्क्रिप्ट का उपयोग करने पर विचार किया है, लेकिन चेतावनी xcodebuild कमांड के बीच में ट्रिगर की गई है, मुझे यकीन नहीं है कि यह काम करेगा। कोई भी सहायताकाफी प्रशंसनीय होगी!

+1

मई को इसका उत्तर मिल गया है: http://scottkle.in/clicking-always-allow-via-applescript-for-cod –

+0

लिंक काम नहीं कर रहा था। इसे यहां ले जाया गया है: http://www.scottkle.in/clicking-always-allow-via-applescript-for-codesign- प्राधिकरण- और- प्रमाण पत्र-acl – Sirio

+0

@AlfieHanssen लिंक काम नहीं कर रहा है, क्या आप पोस्ट कर सकते हैं कृपया समाधान यहाँ? –

1

प्रत्येक बार जब आप अपने कीचेन में एक निजी कुंजी का उपयोग करते हैं तो संवाद के संबंध में, यह सेब स्क्रिप्ट उसी चेतावनी का ख्याल रखेगी जो पहली बार पॉप अप करता है जब आप एक निजी कुंजी का उपयोग करने की अनुमति का अनुरोध करते हैं।

#!/usr/bin/osascript 
tell application "System Events" 
    tell window 1 of process "SecurityAgent" 
    click button "Always Allow" of group 1 
    end tell 
end tell 

codesign wants to use key

+0

यह उस विकल्प के साथ निजी कुंजी जोड़ने के बजाय काफी लंबा है जो कोडिन को इसका उपयोग करने की अनुमति देता है। हां निजी कुंजी, प्रमाण पत्र नहीं, जैसा कि गुई का तात्पर्य है। – Sojurn

2

बस ऊपर सभी प्रश्नों के उत्तर में जोड़ने के लिए: यहां तक ​​कि यहां तक ​​कि अपने कुंजी/प्रमाणपत्र पासवर्ड से सुरक्षित नहीं है, आप security import को -P "" (खाली पासवर्ड) पारित करने के लिए की जरूरत है।

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