लक्ष्य: अपने स्वयं के पैकेज, और मेरे अपने कर्नेल एक्सटेंशन पर हस्ताक्षर करने के लिए। संदर्भ में "मेरा खुद" का अर्थ है "मैंने लिखा है, या मैंने कहीं और उठाया है, अपने स्रोतों से खुद को पुनः स्थापित किया है, और मेरी मशीन पर स्थापित करना चाहता हूं।Mavericks/Yosemite में kext पर हस्ताक्षर नहीं कर सकता?
समस्या: मैवरिक्स Code Signing Failure: code signature is invalid
के साथ मेरे हस्ताक्षर को स्वीकार नहीं करता है (लेकिन भार kext), योसामाइट इसे भी लोड नहीं करेगा।
मेरे पास अपना स्वयं का सीए और कोड-हस्ताक्षर करने वाला कॉर्ट है। मैं सफलतापूर्वक कोड पर हस्ताक्षर करने और नीतियों को स्थापित करने में सक्षम हूं जो दिए गए कॉर्ट द्वारा हस्ताक्षरित कोड की अनुमति देंगे स्थापित करने और निष्पादित करने के लिए - codesign और spctl दोनों जैसा कि आप नीचे दिए गए आउटपुट में देखते हैं। हालांकि, यह kext (कर्नेल एक्सटेंशन) पर लागू नहीं होता है - kextutil जोर देता है कि हस्ताक्षर अमान्य है। यहां आउटपुट है I हो रही है:
$ codesign --verify -vvvv /opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext
/opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext: valid on disk
/opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext: satisfies its Designated Requirement
$ spctl -a -vvv -t exec /opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext
/opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext: accepted
source=XXXXXCode
origin=XXXXXCoder
$ spctl -a -vvv -t install /opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext
/opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext: accepted
source=XXXXXInstall
origin=XXXXXCoder
$ kextutil -tn /opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext
Diagnostics for /opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext:
Code Signing Failure: code signature is invalid
/opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext appears to be loadable (including linkage for on-disk libraries).
मैवरिक्स पर यह केक्स्ट एक चेतावनी संदेश के साथ लोड होता है, जो योसाइट पर नहीं होगा।
मैंने here और Apple CA CPS Developer ID में देखा कि प्रमाण में निम्नलिखित एक्सटेंशन होना चाहिए: (1.2.840.113635.100.6.1.18)
इसे kext-sign प्रमाणपत्र के रूप में नामित करने के लिए। मेरे पास यह नहीं है। मुझे संदेह है कि यह मेरी समस्या का कारण है, लेकिन यह नहीं पता कि इसे कैसे हल किया जाए। spctl में एक प्रकार का विकल्प प्रतीत नहीं होता है जो किसी दिए गए प्रमाण को एक केक्स्ट-साइनिंग के रूप में निर्दिष्ट नीति बनाने के लिए करता है।
मैं इस एक्सटेंशन को कैसे जोड़ूं (अधिमानतः कीचेन सर्टिफिकेट असिस्ट के भीतर, हालांकि ओपनएसएसएल-आधारित समाधान भी ठीक होगा), 100 डॉलर के ऐप्पल वार्षिक "उपयोग शुल्क" का भुगतान करने से कम?
अपने स्वयं के कर्नेल को संकलित करने का छोटा जो आपके प्रमाणपत्र के साथ हस्ताक्षरित केक्सट स्वीकार करेगा, आपको ऐप्पल से एक प्राप्त करने की आवश्यकता होगी। प्लस साइड पर, यदि आप चाहते हैं कि ऐप, इंस्टॉलर और केक्सट्स पर हस्ताक्षर करने के लिए प्रमाण पत्र हैं, तो आपके $ 100 की आवश्यकता नहीं है - डेवलपर आईडी प्रमाणपत्र 5 साल के बाद समाप्त हो जाते हैं, न कि 1. – pmdj
धन्यवाद, लेकिन मुझे यकीन नहीं है कि मैं समझता हूं। [डेवलपर सदस्य केंद्र] (https://developer.apple.com/membercenter/index.action) किसी को प्रमाण पत्र का अनुरोध करने की अनुमति नहीं देता है जब तक कि कोई विशिष्ट डेवलपर प्रोग्राम में नामांकन न करे। [मैक डेवलपर प्रोग्राम] (https://developer.apple.com/programs/mac/) $ 99/वर्ष में सूचीबद्ध है। मेरे लिए यह जांचने का कोई तरीका नहीं है कि वे डेवलपर आईडी प्रमाण कब तक जारी करेंगे। क्या आप कह रहे हैं कि एक वर्ष बाद एक व्यक्ति अपनी सदस्यता रद्द (या नवीनीकृत नहीं कर पाएगा), लेकिन उसका डेवलपर आईडी प्रमाण 4 और वर्षों तक समाप्त नहीं होगा? – Mouse
हां, नवीनीकरण स्वचालित नहीं है। मेरे अनुभव में डेवलपर आईडी प्रमाण पत्र जारी करने के 5 साल बाद समाप्त हो जाता है। तो मुझे लगता है कि अगर आप समाप्ति से कुछ ही समय पहले एक नए प्रमाणपत्र का अनुरोध करते हैं, तो आपको इसके लगभग 6 साल मिलेंगे। मुझे संदेह है कि आपका प्रमाण पत्र समाप्त होने के बाद किसी भी तरह से हस्ताक्षरित सॉफ़्टवेयर गेटकीपर सत्यापन विफल हो जाएगा, इसलिए हो सकता है कि वेब पर सॉफ़्टवेयर प्रकाशित करना एक अच्छा विचार न हो, जिसमें गेटकीपर इसे ब्लॉक करने से कुछ ही महीने पहले हो। आपको याद है, सॉफ्टवेयर में 5 साल लंबा है। उस समय तक, मैक एआरएम सीपीयू पर चल सकता है, और तीसरे पक्ष केएक्सटी की अनुमति नहीं है। ;-) – pmdj