2013-04-12 4 views
7

मैं एक सीएसआर बना रहा हूं जो मेरे सर्वर द्वारा संसाधित किया जा रहा है। इसे subjectNameAlt सेट करने की आवश्यकता है ताकि सर्वर इसे संसाधित कर सके। मैंने दूर-दराज की खोज की है, और केवल यह पाया है कि इसे सामान्य X509 certs के साथ कैसे किया जाए, X509_REQ नहीं। मैं यह कैसे कर सकता हूं (सी और ओपनएसएसएल के साथ। मुझे X509_get_ext_d2i के समतुल्य की आवश्यकता है लेकिन X509_REQ के लिए)?आप X509_REQ पर topicNameAlt एक्सटेंशन कैसे जोड़ते हैं?

उत्तर

10

प्रोग्राम

demos/x509/mkreq.c फ़ाइल वाले OpenSSL के साथ आता है पर एक नज़र डालें। यह एक अनुरोध बनाता है और वैकल्पिक नाम के रूप में एक ईमेल पता जोड़ता है। नीचे छीन यह करता है निम्नलिखित:

exts = sk_X509_EXTENSION_new_null(); 
add_ext(exts, NID_subject_alt_name, "email:[email protected]"); 
X509_REQ_add_extensions(x, exts); 
sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free); 

add_ext इस तरह कार्यान्वित किया जाता है:

int add_ext(STACK_OF(X509_EXTENSION) *sk, int nid, char *value) { 
    X509_EXTENSION *ex; 
    ex = X509V3_EXT_conf_nid(NULL, NULL, nid, value); 
    if (!ex) 
    return 0; 
    sk_X509_EXTENSION_push(sk, ex); 
    return 1; 
} 

कमांड लाइन

मैं दूसरों के लिए जगह में इस खंड को छोड़ से, हालांकि ओपी एक अनुरोध किया एपीआई।

https://wiki.cacert.org/FAQ/subjectAltName इस तरह एक अस्थायी openssl-san.cnf फाइल करने के लिए openssl.cnf फ़ाइल की प्रतिलिपि और फिर संपादित करने के लिए है कि सलाह देते हैं:

[req] 
req_extensions = v3_req 

[ v3_req ] 
basicConstraints = CA:FALSE 
keyUsage = nonRepudiation, digitalSignature, keyEncipherment 
subjectAltName = @alt_names 

[alt_names] 
DNS.1 = host1.yourdomain.tld 
DNS.2 = host2.yourdomain.tld 
+2

मैं खोल या फाइल सिस्टम के माध्यम से नहीं ग के माध्यम से ऐसा करने के लिए, चाहते हैं। – chacham15

+0

बहुत बढ़िया! मैं इसे घंटों के लिए देख रहा हूं! – chacham15

+0

प्रोग्रामिंग के माध्यम से हम [alt_names] जैसे बहुविकल्पीय एक्सटेंशन को कैसे जोड़ सकते हैं? – karim

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