2011-05-11 18 views
34

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

मैं एक ऐसे ऐप पर काम कर रहा हूं जो एक आरईएसटी सेवा के साथ संचार करता है। परीक्षण सर्वर एक स्व-हस्ताक्षरित एसएसएल प्रमाणपत्र का उपयोग करता है जिसे मैं बिना किसी समस्या के अपने कंप्यूटर पर स्थापित कर सकता हूं। यह एक .p12 फ़ाइल है जिसे इंस्टॉल करने के लिए पासवर्ड की आवश्यकता होती है। इस प्रमाणपत्र के बिना, सर्वर के सभी अनुरोध 403 लौटाते हैं।

.p12 "रूट प्रमाणपत्र प्राधिकरण" द्वारा जारी किए गए "परीक्षण प्रमाण पत्र प्राधिकरण", "रूट प्रमाणपत्र प्राधिकरण" कीचेन में तीन आइटम स्थापित करता है। , और एक निजी कुंजी जो "परीक्षण उपयोगकर्ता" प्रमाण से जुड़ी है।

मैंने अपने आईपैड पर इस प्रमाणपत्र को .p12 फ़ाइल ईमेल करके स्थापित किया है। मैंने लगाव पर टैप किया, पासवर्ड इनपुट किया, और अब मैं सफारी में साइट तक पहुंच सकता हूं। दुर्भाग्यवश, एप्लिकेशन सैंडबॉक्सिंग के कारण, यह मेरे ऐप को आरईएसटी सेवा के साथ संवाद करने के लिए पर्याप्त नहीं है।

मैं अपने ऐप से आरईएसटी सेवा के साथ सभी संचार के लिए ASIHTTPRequest का उपयोग कर रहा हूं। प्रत्येक अनुरोध ASIHTTPRequest का उप-वर्ग है। मुझे मिली पहली चीज़ मुझे [self setValidatesSecureCertificate:NO]; पर कॉल करना था ताकि वह सर्वर से एसएसएल कनेक्शन का प्रयास भी कर सके। अगर मैं ऐसा करता हूं, तो मुझे सेवा से 403 त्रुटि कोड वापस मिलते हैं।

अब मुझे यह पता लगाना प्रतीत नहीं होता कि प्रमाणपत्र का उपयोग करने का अनुरोध कैसे प्राप्त किया जाए। मैं अलग .cer फ़ाइल के रूप में तीन आइटम निर्यात, उन्हें परियोजना में शामिल है और नीचे कोड का उपयोग कर अनुरोध करने के लिए उन्हें जोड़ने की कोशिश की है:

NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"cert" ofType:@"cer"]]; 
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (CFDataRef)data); 
... 
[self setClientCertificates:[NSArray arrayWithObjects:(id)cert, ..., nil]]; 

कोड इस दृष्टिकोण का उपयोग कर इस मुद्दे के बिना निष्पादित करता है, मैं अभी भी 403 त्रुटि।

मैंने अपने आवेदन में .p12 फ़ाइल सहित और उसी कोड का उपयोग करके इसे आयात करने का भी प्रयास किया है। यह विफल रहता है क्योंकि SecCertificateCreateWithData शून्य देता है।

मैं मानता हूं कि मैं वास्तव में नहीं जानता कि मैं यहां क्या कर रहा हूं। यह सब मेरे सिर पर थोड़ा सा है और किसी भी मदद से मुझे कोई भी मदद की सराहना की जाएगी।

उत्तर

29

ठीक है, मैंने इसे समझ लिया। मैं गलत पेड़ को भौंकने का प्रकार था।

मुझे मिली सबसे महत्वपूर्ण जानकारी Certificate, Key, and Trust Services Programming Guide, विशेष रूप से, "आईओएस के लिए कार्य" पृष्ठ के लिए ऐप्पल के दस्तावेज़ में थी। यह विस्तृत जानकारी है कि .p12 फ़ाइल से सुरक्षा पहचान निकालने और ट्रस्ट अपवाद कैसे जोड़ें।

पहेली का अंतिम भाग Client Certificate Support पर ASIHTTPRequest के दस्तावेज़ में था। पहचान का उपयोग करके मैंने सीधे पी 12 फाइल से निकाला, मैं इसे अनुरोध पर पास करने में सक्षम था और सबकुछ ठीक से प्रमाणित कर पाया।

मुझे उम्मीद है कि यह किसी और की मदद करता है जिसे एक समान सुविधा को लागू करना है।

+0

लिंक टूटा हुआ है, मुझे लगता है कि यह होना चाहिए: https://developer.apple.com/library/content/documentation/Security/Conceptual/CertKeyTrustProgGuide/index.html – Oriol

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