2013-03-11 6 views
5

मैं एक आईओएस ऐप विकसित कर रहा हूं जिसे प्रमाणपत्र (.pfx) से विषय वैकल्पिक नाम पढ़ने की आवश्यकता होगी।OpenSSL प्रमाण पत्र से विषय वैकल्पिक नाम प्राप्त करें

Security.framework यह जानकारी प्राप्त करने के लिए एक रास्ता नहीं है, तो आप मुझे

विषय नाम पढ़ने के लिए मैं X509_get_subject_name (प्रमाण पत्र) का उपयोग कर रहा OpenSSL (openssl-1.0.1e) का उपयोग कर रहा हूँ और के लिए जारीकर्ता मैं X509_get_issuer_name (प्रमाणपत्र) का उपयोग कर रहा हूं और काम कर रहा हूं।

समस्या विषय वैकल्पिक नाम है। मुझे इस जानकारी को वापस करने के लिए कोई फ़ंक्शन नहीं मिल रहा है।

विषय वैकल्पिक नाम प्राप्त करने के लिए ओपनएसएसएल का उपयोग करना संभव है? कैसे?

संपादित करें:

मैं मैक कीचेन में प्रमाणपत्र आयात किया। विषय वैकल्पिक नाम पर मैं एनटी प्रिंसिपल नाम और आरएफसी 822 नाम देखता हूं।

मैं इस कोशिश की, लेकिन यह NULL लौट जाता है: इस के साथ

GENERAL_NAME *name = (GENERAL_NAME*)X509_get_ext_d2i(cert,NID_subject_alt_name, NULL, NULL) 

मैं पढ़ रहा हूँ प्रमाण पत्र:

X509 *cert; 
CFDataRef der = SecCertificateCopyData(certificate); 
const unsigned char * ptr = CFDataGetBytePtr(der); 
int len = CFDataGetLength(der); 
d2i_X509(&cert,&ptr,len); 

उत्तर

2

आप X509_get_ext_by_NID() तो X509_get_ext का उपयोग करके X509 विषय वैकल्पिक नाम प्राप्त कर सकते हैं():

int loc = X509_get_ext_by_NID(X509 *, NID_subject_alt_name, -1); 

if (loc >= 0) { 
    X509_EXTENSION * ext = X509_get_ext(X509 *, loc); 

तो आपको sk_GENERAL_NAME_n का उपयोग करके एक्सटेंशन का विश्लेषण करना होगा um() और sk_GENERAL_NAME_value(), या X509_get_ext_d2i()।

+0

मैं यह कोशिश कर रहा हूं: (GENERAL_NAME *) X509_get_ext_d2i (प्रमाण, NID_subject_alt_name, NULL, NULL); लेकिन मैं शून्य हूं। क्या यह काम करना चाहिए? – Freedom

+0

सिद्धांत में आपको केवल शून्य प्राप्त करना चाहिए यदि प्रमाणपत्र शून्य है, प्रमाणपत्र में कोई विषय वैकल्पिक नाम एक्सटेंशन या एक से अधिक नहीं है। क्या आप सर्टिफिकेट को प्रमाण पत्र में लोड कर सकते हैं और सर्टिफिकेट की सामग्री (या ओपनएसएल x509 -in -text का आउटपुट अगर आप इसे पसंद करते हैं)? –

+0

मैं X509_get_subject_name() का उपयोग कर रहा हूं और काम कर रहा हूं। मैंने मैक कीचेन में प्रमाण पत्र आयात किया। विषय वैकल्पिक नाम पर मैं एनटी प्रिंसिपल नेम और आरएफसी 822 नाम देखता हूं (उनके पास एक ही मूल्य है)। क्या यह समस्या हो सकती है? – Freedom

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