2012-02-23 10 views
6

मैं मौसम जांचता हूं कि यूआरएल में एसएसएल cetificate मौजूद है, यह भी अपने संस्करण और सत्यापन प्रकार की जांच करना चाहता है।आईओएस में एसएसएल प्रमाणपत्र की सुरक्षा कैसे जांचें?

मैंने एक ऐसा ऐप्लिकेशन बनाया है जहां मैं सर्वर पर अनुरोध भेजने के लिए NSURLConnection प्रतिनिधि विधियों को बुला रहा हूं।

भी "canAuthenticateAgainstProtectionSpace" विधि का उपयोग किया गया, लेकिन कनेक्शन स्थापित होने के बाद इस विधि को कॉल नहीं किया जा रहा है।

क्या कोई मुझे बता सकता है कि इसे कैसे प्राप्त किया जाए।

उत्तर

9

आईओएस आपको प्रमाणपत्र जानकारी के लिए बहुत बारीक पहुंच प्रदान नहीं करता है। आपके पास दो विकल्प हैं: निजी एपीआई या ओपनएसएसएल के साथ अपना खुद का मूल्यांकनकर्ता बनाएं।

आप opensource code में निजी प्रमाणपत्र फ़ंक्शन देख सकते हैं। संस्करण SecCertificateVersion() से उपलब्ध है। मुझे यकीन नहीं है कि आपका मतलब "सत्यापन प्रकार" से क्या है।

ओपनएसएसएल के साथ ऐसा करने के लिए, आप SecCertificateCopyData() के साथ डीईआर डेटा प्राप्त कर सकते हैं और फिर अपने आप को सब कुछ पार्स कर सकते हैं।

मैं इस मुद्दे पर एक रडार (bugreporter.apple.com) खोलने का सुझाव देता हूं। प्रमाण पत्र के बारे में मूलभूत जानकारी तक पहुंच की कमी एक गंभीर समस्या है।

आप नमूना कोड है कि NSURLConnection से प्रमाण पत्र के अर्क के लिए देख रहे हैं, को देखने के Chapter 11 sample codeiOS:PTL से:

- (void)connection:(NSURLConnection *)connection 
    willSendRequestForAuthenticationChallenge: 
    (NSURLAuthenticationChallenge *)challenge 
{ 
    NSURLProtectionSpace *protSpace = challenge.protectionSpace; 
    SecTrustRef trust = protSpace.serverTrust; 
    ... 
    SecCertificateRef cert = SecTrustGetCertificateAtIndex(trust, 0); 
    ... 

इस बिंदु पर, cert अपने पत्ता प्रमाणपत्र रखती है।

+0

आपके सुझाव के लिए धन्यवाद। "सत्यापन प्रकार" का अर्थ है कि URL पर एसएसएल का सत्यापन प्रकार लागू किया गया है, या तो मानक या विस्तारित सत्यापन। यहां मैंने "अध्याय 11 नमूना कोड" में दिए गए कोड का उपयोग किया है, लेकिन जब मैं ऐप बनाने की कोशिश कर रहा हूं, तो मुझे संकलन समय त्रुटियां मिल रही हैं -> आर्किटेक्चर i386: "_SecPolicyCreateBasicX509" के लिए अपरिभाषित प्रतीक, संदर्भित: _RNSecTrustEvalaluAsX509 में ConnectionViewController.o, "_SecCertificateNotValidAfter", से संदर्भित: - [कनेक्शनव्यू कंट्रोलर कनेक्शन: willSendRequestForAuthenticationChallenge:] ConnectionViewController.o – iLearner

+2

में आपको सुरक्षा.फ्रेमवर्क को लिंक करने की आवश्यकता है। –

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