6

यह विषय मुझे भ्रमित करना जारी रखता है। मैंने सोचा कि मैं अपनी वर्तमान समझ लिखूंगा और उम्मीद करता हूं कि जिन चीजों के बारे में मैं सही हूं, उनके बारे में मैं सही हूं।प्रमाण पत्र, प्रावधान प्रोफाइल, सार्वजनिक/निजी कुंजी demystified

जब आप कोई विकास प्रमाण पत्र बनाते हैं, तो सार्वजनिक और निजी कुंजी की अवधारणा होती है। प्रावधान पोर्टल के माध्यम से उपलब्ध प्रमाणपत्र सार्वजनिक कुंजी पर है, जबकि आपकी निजी कुंजी आपके कीचेन में संग्रहीत है। कोड को अपने ऐप पर हस्ताक्षर करने के लिए, आपको दोनों मिलना होगा।

ऐप चलाने के लिए, डिवाइस में एक प्रावधान प्रोफ़ाइल होना चाहिए, जो अनिवार्य रूप से एक ऐप पहचानकर्ता पर निर्भर करता है, मान्यता प्राप्त प्रमाणपत्रों का एक सेट (ऐप को इन प्रमाणपत्रों में से किसी एक द्वारा हस्ताक्षरित किया जाना चाहिए), और डिवाइस पहचानकर्ताओं का सेट (जो इंगित करता है कि कौन से डिवाइस ऐप चलाने की अनुमति है)।

'मान्यता प्राप्त प्रमाणपत्र' में सार्वजनिक कुंजी के संदर्भ हैं, जबकि निजी कुंजी अनिवार्य रूप से ऐप द्वारा पारित की जाती है।

इस प्रकार, ऐप स्टोर के संबंध में, हम एक सामान्य डिवाइस के बारे में सोच सकते हैं जो एक डिफ़ॉल्ट प्रो प्रोफाइल के साथ आ रहा है जिसमें पहले से ही सेब की सार्वजनिक कुंजी है और सेब वितरित करने से पहले अपना स्वयं का कोड साइन ऑपरेशन करता है जिससे वे अपना निजी जोड़ते हैं कुंजी।

बिल्कुल सही? बंद करे? रास्ता बंद? पागल?

+0

मेरे ज्ञान के अनुसार सही दिख रहे हैं। –

उत्तर

1

रे वेंडरलिच ने इसे here उचित रूप से अच्छी तरह समझाया है।

के बजाय, अपने विवरण में सुधार करने के लिए 'मान्यता प्राप्त प्रमाण पत्र' सार्वजनिक कुंजी के लिए संदर्भ है, जबकि निजी कुंजी अनिवार्य रूप से एप्लिकेशन द्वारा पारित कर दिया है।

मैं कहूंगा:

एप्लिकेशन .ipa एक डेवलपर प्रमाण पत्र भी शामिल है। डेवलपर प्रमाणपत्र आपकी निजी कुंजी के साथ-साथ आधिकारिक ऐप्पल निजी कुंजी के साथ हस्ताक्षरित है।

इस प्रकार, एप्पल और अपने सार्वजनिक कुंजी के साथ डेवलपर प्रमाण पत्र को सत्यापित करके, iPhone कि पुष्टि कर सकते हैं:

  • आप इस ऐप्लिकेशन
  • आप अनुप्रयोग के लिए एप्पल द्वारा प्रमाणित किया गया है की डेवलपर हैं विकास
  • यह ऐप आईफोन पर चलाने की अनुमति है (जब तक कि इस डेवलपर प्रमाणपत्र को संदर्भित करने वाले फोन पर एक प्रावधान प्रोफ़ाइल है)।

आपकी निजी कुंजी किसी भी प्रमाणपत्र या प्रोफाइल में संग्रहीत नहीं है, इसका उपयोग केवल हस्ताक्षर करने के लिए किया जाता है। सुनिश्चित नहीं है कि सार्वजनिक कुंजी संग्रहित है या नहीं। पूरी तरह से सुरक्षित होने के लिए, फ़ोन सत्यापित करते समय ऐप्पल से सार्वजनिक कुंजी लेना चाहिए।

एक प्रोविजनिंग प्रोफाइल एक फ़ाइल है कि आप (एक AppID के माध्यम से) बताता है कि कौन से ऐप्स है, जो डेवलपर (प्रमाण पत्र के माध्यम से) द्वारा हस्ताक्षर किए गए, जिस पर उपकरणों चला सकते हैं:

+0

क्या आईओएस आवेदन प्रमाण पत्र से सार्वजनिक/निजी कुंजी प्राप्त करना संभव है? –

+0

@ iTroyd23 निजी कुंजी जो आप निश्चित रूप से प्रमाणपत्र से नहीं प्राप्त कर सकते हैं, क्योंकि यह एक प्रमुख सुरक्षा उल्लंघन होगा। सार्वजनिक कुंजी, मुझे नहीं पता। भले ही वे सर्टिफिकेट में हों, फिर भी डिवाइस को अन्य सुरक्षा लूप-छेद से बचने के लिए सर्वर से अनुरोध करना चाहिए। – fishinear

+0

ठीक है धन्यवाद। क्या ऐप्पल को अपने ऐप से प्रोफाइल तक पहुंचने की इजाजत है? –

4

क्या इसके लायक है के लिए, यहाँ मेरी अद्यतन समझ है (यूडीआईडीएस)।

प्रमाण पत्र के साथ, वहाँ एक सार्वजनिक और निजी कुंजी की एक अवधारणा है। सार्वजनिक और निजी कुंजी गणितीय रूप से जुड़ी हैं जैसे कि कोई सादा पाठ एन्क्रिप्ट कर सकता है, और कोई भी सिफर टेक्स्ट को डिक्रिप्ट कर सकता है। सर्टिफिकेट सेब को दो चीजों को सुनिश्चित करने की इजाजत देता है: 1, केवल पंजीकृत डेवलपर्स ही अपना कोड वितरित कर सकते हैं, और 2, कि वितरित किया जा रहा कोड आपके डिवाइस पर नहीं बदला जाता है।

जब आप Xcode में अपने कोड का निर्माण, आप 'कोड संकेत' निजी अपने-चेन में स्थित कुंजी से अपना एप्लिकेशन है, जिससे यह ताला लगा '। कोड को अनलॉक/डिक्रिप्ट करने के लिए, गंतव्य डिवाइस के पास आपकी सार्वजनिक कुंजी तक पहुंच होनी चाहिए। डिवाइस को आपके प्रमाणपत्र से सार्वजनिक कुंजी मिलती है जो प्रावधान प्रोफ़ाइल में शामिल है।

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

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

इसके अलावा, प्रांत प्रोफ़ाइल केवल फोन के UDID जांच करके सुनिश्चित करें प्रोफ़ाइल से AppID अनुप्रयोग में पहचानकर्ता से मेल खाता है है।

कारण है कि हम appstore से एप्लिकेशन के लिए अलग प्रांत प्रोफाइल की जरूरत नहीं है, मैं यह मान है, क्योंकि कोड संकेत वितरण क्षुधा को सेब के द्वारा प्रयोग किया सार्वजनिक कुंजी के साथ प्रत्येक iPhone जहाज।

+0

भी ठीक करने के लिए स्वतंत्र महसूस करें! –

+0

मुझे लगता है कि रे का टेस्टफ्लाइट ट्यूटोरियल इसके कोड पर हस्ताक्षर करने के बाद भी बेहतर होता है। http://www.raywenderlich.com/48750/testflight-sdk-tutorial – huggie

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