2013-10-04 7 views
6

पर है, मैं अपने निर्माण में कोड हस्ताक्षर को एकीकृत कर रहा हूं और स्रोत कोड पेड़ के भीतर एक कस्टम कीचेन बनाया है और कोड पर हस्ताक्षर करने के लिए उपयोग किया जाता है (यह ~/Library/Keychains पर कॉपी किया गया है इस्तेमाल होने से पहले, तो यह एक प्रसिद्ध स्थान में है)।कोडेडिन का कहना है कि "कोई पहचान नहीं मिली" हालांकि पहचान कुंजीचेन

हालांकि जब मैं कोई त्रुटि मिलती प्रवेश करने का प्रयास:

$ /usr/bin/codesign --sign='Mac Developer: John Doe (AA1AAA1AAA)' \ 
    --keychain=~/Library/Keychains/xxx.keychain \ 
    dist/64/gmake/release/bin/libmylib.dylib 

Mac Developer: John Doe (AA1AAA1AAA): no identity found 

हालांकि:

$ security find-identity -p codesigning ~/Library/Keychains/xxx.keychain 

Policy: Code Signing 
    Matching identities 
    1) 49F2FBE79899DF18A9638AC6B1302E2EB6E079AD "Mac Developer: John Doe (AA1AAA1AAA)" 
    1 identities found 

    Valid identities only 
    1) 49F2FBE79899DF18A9638AC6B1302E2EB6E079AD "Mac Developer: John Doe (AA1AAA1AAA)" 

तो मुझे समझ नहीं आता क्यों codesign पहचान खोजने में असमर्थ है।

क्या कोई समाधान सुझा सकता है?

ध्यान दें कि मैंने इसी परिणाम के साथ पहचान के SHA-1 के साथ भी प्रयास किया है।

उत्तर

8

कुछ कोडइन के त्रुटि संदेश स्पष्ट से कम हैं। यहां समस्या यह है कि कोडिंग को चाबी नहीं मिल सका, और यह --keychain=~/path के उपयोग के कारण होता है। इसे एक तर्क के रूप में व्याख्या किया जाता है और कोई टिल्डे विस्तार नहीं किया जाता है। यदि आप अलग-अलग तर्कों का उपयोग करने के लिए अपने आदेश को संशोधित करते हैं तो इसे अपेक्षित कार्य करना चाहिए:

codesign --sign 'Mac Developer: John Doe (AA1AAA1AAA)' \ 
    --keychain ~/Library/Keychains/xxx.keychain \ 
    dist/64/gmake/release/bin/libmylib.dylib 
+0

दिलचस्प; मैंने इस बात पर विचार नहीं किया कि अगर मैं इस तरह से तर्क निर्दिष्ट करता हूं तो खोल '~' का विस्तार नहीं करेगा। मैं कल परीक्षण करूंगा और आपसे वापस आऊंगा, हालांकि मुझे लगता है कि आप विजेता पर हैं। – trojanfoe

+0

हां, यह जवाब है, हालांकि अब मुझे "सुरक्षा अनलॉक-कीचेन 'के साथ अनलॉक कर दिया गया है, इस तथ्य के बावजूद मुझे" उपयोगकर्ता इंटरैक्शन की अनुमति नहीं है "। अब मुझे पता है कि अनुक्रम 'login.keychain' के साथ काम करेगा (मैं इसे अक्सर करता हूं) हालांकि यह गैर-मानक कीचेन का उपयोग करते समय काम नहीं करता है। मुझे एक * सहायता पिशाच * से नफरत है, लेकिन क्या आपके पास कोई सुझाव है? – trojanfoe

+0

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

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