यह प्रश्न another question जैसा है। कुछ संशोधनों के साथ यहां जवाब दोबारा पोस्ट करना!
मैंने रूबी और Plist मणि में उपलब्ध OpenSSL मॉड्यूल का उपयोग किया है।
पासकोड प्रतिबंध प्रोफ़ाइल पर विचार करें।
passcode_payload ={
'PayloadUUID' => 'RANDOM_STRING_UUID',
'PayloadOrganization' => 'PayloadOrganization',
'PayloadVersion' => 1,
'PayloadIdentifier' => 'com.test.PayloadIdentifier',
'PayloadType' => 'Configuration',
'PayloadDisplayName' => 'PayloadDisplayName',
'PayloadRemovalDisallowed' => false
}
passcode_payload_content = {
'PayloadDescription' => 'PayloadDescription',
'PayloadDisplayName' => 'PayloadDisplayName',
'PayloadIdentifier' => 'PayloadIdentifier',
'PayloadOrganization' => 'PayloadOrganization',
'PayloadType' => 'com.apple.mobiledevice.passwordpolicy',
'PayloadUUID' => "RANDOM_STRING_UUID",
'PayloadVersion' => 1,
'allowSimple' => true,
'forcePIN' => true
'maxPINAgeInDays' => 20,
'minComplexChars' => 1,
'minLength' => 4,
'requireAlphanumeric' => true
}
आमतौर पर एक सामान्य प्रोफ़ाइल के लिए passcode_payload_content
शब्दकोशों की सरणी के रूप में passcode_payload['PayloadContent']
में चला जाता है।
passcode_payload [ 'PayloadContent'] = [passcode_payload_content]
लेकिन एक एन्क्रिप्टेड प्रोफ़ाइल के लिए, PayloadContent
हटा दिया जाना चाहिए और EncryptedPayloadContent
configuration profile key reference document प्रति के रूप में इस्तेमाल किया जाना चाहिए।
प्रश्न 1:.mobileconfig प्रोफ़ाइल है वास्तव में उस एन्क्रिप्टेड से कौन सा डेटा (डेटा) में चला जाता है .. (/ डेटा) (कुंजी) EncryptedPayloadContent की धारा (/ कुंजी)
से दस्तावेज़,
एक प्रोफ़ाइल एन्क्रिप्ट करने के लिए निम्न कार्य करें:
PayloadContent
सरणी निकालें और एक उचित plist के रूप में यह क्रमानुसार।
ध्यान दें कि इस प्लिस्ट में शीर्ष-स्तरीय ऑब्जेक्ट एक सरणी है, शब्दकोश नहीं।
सीएमएस-सीरियलाइज्ड प्लिस्ट को लिफाफा डेटा के रूप में एन्क्रिप्ट करें। डीईआर प्रारूप में एन्क्रिप्टेड डेटा को सीरियलाइज़ करें।
प्रोफ़ाइल में एक डाटा plist आइटम के रूप में की मूल्य के रूप में धारावाहिक डेटा सेट, plist में महत्वपूर्ण EncryptedPayloadContent
के बाद से शीर्ष स्तर वस्तु का उपयोग कर एक सरणी
passcode_payload_content_array = [passcode_payload_content]
होना चाहिए उचित plist
to_be_encrypted_plist = passcode_payload_content_array.to_plist
प्रमाण पत्र पेलोड contening एन्क्रिप्ट करना टी,
device_certificate = OpenSSL::X509::Certificate.new File.read('deviceIdentityCertificate.pem')
encrypted_payload = OpenSSL::PKCS7.encrypt([device_certificate],to_be_encrypted_plist, OpenSSL::Cipher::Cipher::new("des-ede3-cbc"),OpenSSL::PKCS7::BINARY)
प्रश्न 2:द्विपदीय प्रारूप (.der) या बेस 64 में डेटा इनकोडिंग है? der प्रारूप में मूल पेलोड को
जोड़ें एन्क्रिप्टेड पेलोड सामग्री
passcode_payload['EncryptedPayloadContent'] = StringIO.new(encrypted_payload.to_der)
मुझे यकीन है कि आप कभी भी, यह करने के लिए सक्षम होगा जब से तुम प्रयास करने से पहले अपने प्रोफाइल को डिक्रिप्ट करने सफारी हिदायत नहीं कर सकते हैं नहीं कर रहा हूँ इसे सिस्टम कीचेन में आयात करने के लिए। चूंकि आप सफारी का जिक्र करते हैं, मुझे लगता है कि आप इसके माध्यम से प्रोफाइल स्थापित करने का प्रयास कर रहे हैं। शायद आप उन्हें सर्वर पर एन्क्रिप्टेड स्टोर कर सकते हैं, अनुरोध पर डिक्रिप्ट कर सकते हैं (एचटीएमएल फॉर्म में एक कुंजी दर्ज करें) और एसएसएल पर डिक्रिप्ट संस्करण को डिवाइस पर भेज सकते हैं? – Soup