एड-हॉक कोड साइनिंग
तीसरे पक्ष के अनुप्रयोगों और बायनेरिज़ के लिए, जो आप खुद को संकलित करते हैं, और जिसके लिए कोड हस्ताक्षर की आवश्यकता होती है , एक तदर्थ कोड हस्ताक्षर का उपयोग करें ।
- मैं यह मान रहा हूं कि आवेदन बिना हस्ताक्षर के नहीं चलेगा;
- मैं मान रहा हूं कि आवेदन वितरित नहीं किया जाएगा;
- मैं मान रहा हूं कि आप हस्ताक्षर की वैधता की पहचान के बारे में परवाह नहीं करते हैं।
एक तदर्थ हस्ताक्षर विश्वसनीय सुरक्षा लाभ प्रदान नहीं करता है। इसका उपयोग यह निर्धारित करने के लिए किया जा सकता है कि क्या एप्लिकेशन को बदल दिया गया है और इसका उपयोग सुरक्षा प्रतिबंधों को लागू करने के लिए किया जा सकता है, जैसे कि एंटाइटेलमेंट, किसी एप्लिकेशन को।
एक तदर्थ हस्ताक्षर के खिलाफ मान्य होगा, codesignलेकिन नहीं spctl। बाइनरी पर हस्ताक्षर किए जाने के आधार पर यह बात हो भी सकती है और नहीं भी। अनुप्रयोगों और निष्पादन योग्यताओं के लिए, यह मायने नहीं रखता है क्योंकि spctlस्थानीय रूप से बनाए गए बायनेरिज़ पर नहीं चलाया जाता है।
कोड साइन क्यों?
परिष्कृत प्रश्न के बारे में:
मुझे अहस्ताक्षरित स्रोत कोड को कैसे संभालना चाहिए जो मैं खुद को संकलित करता हूं, क्योंकि मुझे उम्मीद नहीं है कि योगदानकर्ताओं को हमेशा सक्षम होना चाहिए, या उनके कोड को याद रखना चाहिए, खासकर जब यह कई योगदानकर्ताओं के साथ स्रोत परियोजनाओं को खोलने के लिए छोटे योगदान की बात आती है।
अधिकांश स्व संकलित अनुप्रयोगों के लिए, कोड हस्ताक्षर की कोई आवश्यकता नहीं है। यह मानता है कि आप एप्लिकेशन के कोड पर भरोसा करते हैं। MacOS पर, आप फाइंडर से अविशिष्ट अनुप्रयोग खोल सकते हैं, एक अज्ञात डेवलपर से ऐप्पल ओपन खोलें ।
यदि आप कोड या डेवलपर्स पर भरोसा नहीं करते हैं, तो एप्लिकेशन को संकलित या चलाएं नहीं।
आपका उत्तरदायित्व
स्रोत कोड के प्रदाता के पास पूर्व-निर्मित कोड हस्ताक्षरित बायनेरिज़ प्रदान करने के लिए कोई जिम्मेदारी या दायित्व नहीं है। स्वयं संकलित होने के नाते, सभी कोड हस्ताक्षर आपकी पसंद और जिम्मेदारी है।
Apple को कोड हस्ताक्षर करने के लिए अपने ऐप स्टोर में सबमिशन की आवश्यकता होती है ।
ऐप्पल ऐप स्टोर के बाहर डेवलपर्स अनुरोध करते हैं कि वे अपने कोड पर हस्ताक्षर करें, लेकिन यह अभी तक आवश्यक नहीं है।
दोनों ही मामलों में, केवल अंतिम बायनेरिज़ पर हस्ताक्षर किए जाते हैं। मूल स्रोत कोड और संसाधनों पर हस्ताक्षर नहीं किए गए हैं।
स्रोत कोड हस्ताक्षरित नहीं है
स्रोत कोड स्वयं macOS के लिए सार्थक तरीके से हस्ताक्षरित कोड नहीं हो सकता है। स्रोत फ़ाइलों और कोड को डिजिटल रूप से हस्ताक्षरित किया जा सकता है, जैसा कि किसी भी अन्य फ़ाइल में हो सकता है, लेकिन यह इस बात पर कोई प्रभाव नहीं डालता है कि परिणामी एप्लिकेशन या बाइनरी को macOS द्वारा कैसे व्यवहार किया जाता है।
एड-हॉक कोड कैसे एक मैक एप्लीकेशन पर हस्ताक्षर करें
एक तदर्थ हस्ताक्षर के साथ macOS पर किसी एप्लिकेशन को कोड करने के लिए, पहचान -sध्वज को इस पर सेट करें -:
codesign --force -s - </path/to/application>
codesignकमांड के अन्य सभी नियम, आवश्यकताएं और क्रमबद्धताएं समान हैं।
--forceकिसी भी मौजूदा हस्ताक्षर को अधिलेखित करने के लिए ध्वज का उपयोग यहां किया जाता है।
आपको उप-संसाधनों जैसे चौखटे और एम्बेडेड सेवाओं पर हस्ताक्षर --deepकरने के लिए ध्वज को codesignकमांड में जोड़ने की आवश्यकता हो सकती है ।