पर एक स्व हस्ताक्षरित प्रमाणपत्र पर भरोसा करने में असमर्थ मैं वर्तमान में एक स्वयं हस्ताक्षरित प्रमाणपत्र के साथ एक सर्वर से कनेक्ट करने की कोशिश कर रहा हूं। मैं सर्वर से कनेक्ट करने के लिए NSURLConnection का उपयोग कर रहा हूं। मैं कैसे सुनिश्चित कर सकता हूं कि मैं केवल सही सर्वर पर भरोसा करता हूं और अन्य सभी कनेक्शन रद्द करता हूं? मैं निम्नलिखित कोडआईफोन
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
SecTrustResultType results;
SecTrustRef trust = [[challenge protectionSpace] serverTrust];
SecTrustEvaluate(trust, &results);
if (results == kSecTrustResultProceed || results == kSecTrustResultConfirm) {
[challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
} else {
[challenge.sender cancelAuthenticationChallenge:challenge];
}
}
वर्तमान में SecTrustEvaluate
हमेशा kSecTrustResultRecoverableTrustFailure
के बराबर परिणामों के साथ रिटर्न उपयोग कर रहा हूँ। मैंने आईफोन कॉन्फ़िगरेशन उपयोगिता का उपयोग कर फोन पर प्रमाणपत्र के साथ कॉन्फ़िगरेशन प्रोफ़ाइल स्थापित की है और इसे सत्यापित के रूप में चिह्नित किया गया है लेकिन यह परिणाम नहीं बदला है।
क्या कोई मुझे स्वयं हस्ताक्षरित प्रमाणपत्र के लिए kSecTrustResultProceed
या kSecTrustResultConfirm
का ट्रस्ट परिणाम प्राप्त करने में सहायता कर सकता है?
अच्छा टिप, यह काम करता है अगर तुम हो रही है ** kSecTrustResultRecoverableTrustFailure ** ... विशेष रूप से "subjectAltName" कुंजी बहुत है जरूरी। यदि आपके सर्वर को DNS द्वारा प्रतिक्रिया दी जाती है तो इसे 'topicAltName = DNS: example.com' का उपयोग करना चाहिए या यदि आप दोनों' topicAltName = IP: 10.0.1.5, DNS: example.com' चाहते हैं। धन्यवाद ! – gwdp