2011-12-16 12 views
10

पर हस्ताक्षर करने के लिए कीचेन स्विच करें, मैं एक निश्चित कीचेन पर स्विच करने की कोशिश कर रहा हूं, और दूसरा बंद कर रहा हूं। मुझे इसकी आवश्यकता है क्योंकि हमारे एंटरप्राइज़ & ऐपस्टोर पहचान समान हैं।सीएलआई: xcodebuild

अभी, मैं एक "सुरक्षा अनलॉक-कीचेन" करता हूं जिसके बाद सही कुंजीचैन खोलने के लिए "सुरक्षा डिफ़ॉल्ट-कीचेन" होता है और उस कुंजीपटल पर "सुरक्षा लॉक-कीचेन" करता हूं जिसका मैं उपयोग नहीं करना चाहता हूं।

लेकिन xcodebuild अभी भी दोनों कीचेनों में प्रविष्टियों को देखता है और छोड़ देता है।

iPhone Distribution: Company name.: ambiguous (matches "iPhone Distribution: Company name." in /Users/user/Library/Keychains/login.keychain and "iPhone Distribution: Company name" in /Users/user/Library/Keychains/enterprise.keychain) 

मैं सिस्टम को लॉक करने वाले कीचेन में प्रवेश ढूंढने से कैसे रोकूं?

उत्तर

3

समाधान: मैंने लॉग इन कीचेन में सभी ऐपस्टोर से संबंधित सामान और एक अलग कीचेन फ़ाइल में एंटरप्राइज़ सामग्री डाल दी है।

# 1. Only activate the System and either the Appstore(=login) or Enterprise keychain. 
security list-keychains -s $KEYCHAIN_NAME $SYSTEM_KEYCHAIN 

# 2. Loop through App Schema's 
for APP_SCHEME in ${APP_SCHEMES[@]}; do 
    echo "--= Processing $APP_SCHEME =--" 
    xcodebuild -scheme "${APP_SCHEME}" archive 
done ### Looping through App Schema's 

# 3. Restore login & system keychains 
security list-keychains -s $APPSTORE_KEYCHAIN $ENTERPRISE_KEYCHAIN $SYSTEM_KEYCHAIN 
+0

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

0

xcode संस्करण 6 और नीचे के लिए एक अन्य समाधान: SHA1 के बजाय द्वारा (अस्पष्ट) नाम अपने प्रमाण पत्र निर्दिष्ट

buildscript में, मैं इस प्रकार उन के बीच स्विच। "आदमी codesign" से:

If identity consists of exactly forty hexadecimal digits, it is instead 
interpreted as the SHA-1 hash of the certificate part of the desired iden- 
tity. In this case, the identity's subject name is not considered. 

और "सुरक्षा सहायता प्राप्त करें-प्रमाणपत्र"

-Z Print SHA-1 hash of the certificate 

दुर्भाग्य से, इस विधि PackageSign स्क्रिप्ट है, जो किया गया है deprecated in Xcode 7

+0

वादा करता है ... लेकिन मुझे नहीं लगता कि मैं xcode में SHA1 निर्दिष्ट कैसे कर सकता हूं। मुझे शायद एक स्क्रिप्ट द्वारा हस्ताक्षर करना होगा। वैसे भी, संकेत के लिए धन्यवाद। मैं यह देखने के लिए खोद दूंगा कि यह हमारी मदद कर सकता है या नहीं। – P5ycH0

+1

@ P5ych0 क्षमा करें, अब तक यह नहीं देखा। हां, हम साइन इन स्क्रिप्ट करते हैं, उदाहरण के लिए "xcrun -sdk iphoneos PackageApplication --sign --embed <प्रावधान प्रोफ़ाइल>" –

+0

लेकिन जैसा कि मैं पैकेज अनुप्रयोग स्क्रिप्ट में देख सकता हूं, स्निपेट्स को साइन-इन पैरामीटर की जांच कर रहे हैं "आईफोन वितरण" मैच करें, इसलिए मैं SHA-1 का उपयोग कर gues व्यवहार्य नहीं है जब तक कि यह छोटी गाड़ी स्क्रिप्ट हैक नहीं किया जाता है। – lef

9

आप बता सकते हैं उपयोग करने की आवश्यकता से एक्सकोड जो कि चाबी का उपयोग करने के लिए:

xcodebuild "OTHER_CODE_SIGN_FLAGS=--keychain '$PATH_TO_KEYCHAIN'" 

या, यदि आप 01 को कॉल करते हैं सीधे:

codesign --keychain "$PATH_TO_KEYCHAIN" 

आप PackageApplication उपयोग करते हैं, वहाँ नहीं इस सेट करने के लिए एक तरीका है। हालांकि, पैकेज एप्लिकेशंस एक बहुत ही सरल स्क्रिप्ट है जिसे आवश्यक होने पर फिर से कार्यान्वित किया जा सकता है (यदि आप एक बड़ी प्रणाली/स्क्रिप्ट के साथ एकीकृत कर रहे हैं तो बहुत उपयोगी)।

+0

अच्छा लगता है। मैं इसे आज़मा दूंगा। क्या कुंजीपैन अनुप्रयोग में निर्दिष्ट कीचेन लोड होने की आवश्यकता है, या फाइल सिस्टम पर उनकी उपस्थिति पर्याप्त है? – P5ycH0

+0

मुझे नहीं लगता कि कीचेन को चाबी के आवेदन में जोड़ा जाना चाहिए, लेकिन मुझे यकीन नहीं है। –