2009-08-09 13 views
6

मैं वर्तमान में NSURLConnection का उपयोग कर वेब सर्वर से एक https कनेक्शन खोलता हूं। सबकुछ काम करता है जैसा कि करना चाहिए और मैं उस पेज सामग्री को पुनः प्राप्त करने में सक्षम हूं जिसके बाद मैं हूं। प्रमाणपत्र VeriSign द्वारा जारी किया गया है और मुझे लगता है कि NSURLConnection कुछ हद तक प्रमाण पत्र की प्रामाणिकता को सत्यापित करने के लिए कुछ काम करता है? यदि मैं मोबाइल सफारी के माध्यम से एक ही वेबसाइट से जुड़ा हूं तो यह प्रमाणपत्र से निकालेगा, और नेविगेशन बार में संगठन (वेबसाइट का) प्रदर्शित करेगा। क्या यह संभवतः कोको टच में इन विवरणों को निकालने के लिए है क्योंकि मैं भी उन्हें उपयोगकर्ता को प्रस्तुत करना चाहता हूं? यह प्रमाण पत्र के खिलाफ सर्वर के होस्ट नाम को सत्यापित करने के लिए भी उचित होगा कि वेबसाइट वैध है?कोको टच में वेबसाइट प्रमाण पत्र कैसे सत्यापित करें?

उत्तर

5

NSURLConnection आपको एक त्रुटि (NSURLErrorDomain) देगा यदि आप किसी अमान्य प्रमाणपत्र वाले सर्वर से कनेक्ट करने का प्रयास करते हैं (उदा। यह स्वयं हस्ताक्षरित है, पुराना है, गलत होस्ट इत्यादि है)। इसलिए आपको वास्तव में कोई सत्यापन करने की आवश्यकता नहीं है, क्योंकि यह सब आपके लिए संभाला जाता है।

यदि आप वास्तव में अपने यूआई में एक SSL प्रमाणपत्र सारांश प्रदर्शित करना चाहते हैं, तो आपको NSURLConnection से एक परत छोड़नी होगी और इसके बजाय निम्न-स्तर CFNetwork API का उपयोग करना होगा। एक बार जब आप एक CFReadStreamRefkCFStreamEventEndEncountered स्थिति में नहीं है कि है, तो आप निम्नलिखित करने के लिए सक्षम होना चाहिए (यह मानते हुए अपनी स्ट्रीम संभाल readStream कहा जाता है):

NSArray* certificates = [(NSArray*)CFReadStreamCopyProperty(readStream, kCFStreamPropertySSLPeerCertificates) autorelease]; 
if ([certificates count] > 0) { 
    SecCertificateRef certificate = (SecCertificateRef)[certificates objectAtIndex:0]; 
    NSString* description = [(NSString*)SecCertificateCopySubjectSummary(certificate) autorelease]; 
    NSData* data = [(NSData*)SecCertificateCopyData(certificate) autorelease]; 
} 

आप data में आयोजित अगर आप चाहते हैं के बारे में जानकारी को डिकोड करने की आवश्यकता होगी प्रमाण पत्र के विभिन्न गुणों तक पहुंचने के लिए, लेकिन description में आयोजित सारांश आपके उद्देश्यों के लिए पर्याप्त हो सकता है।

+1

धन्यवाद मदद के लिए नाथन, एक परत छोड़ने की तरह आप सुझाव चाल किया! यद्यपि वास्तव में कोई समस्या नहीं है, लेकिन इसके बजाय आपका NSDictionary * Cast एक NSArray * नहीं होना चाहिए? – dbotha

+0

क्या आप एक कोड नमूना डीओन पोस्ट करने में सक्षम होंगे? – Pripyat

+0

@Deon ठीक है आप! मैंने नमूना कोड अपडेट किया है। –

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