ओपनएसएसएल: एक खाली विषय डीएन के साथ प्रमाण पत्र कैसे बनाएं?


14

क्या केवल वैकल्पिक नाम विशेषता / विस्तार में पहचान की जानकारी के साथ PKCS # 10 प्रमाणपत्र अनुरोध / X.509 प्रमाणपत्र बनाना संभव है? X.509 4.1.2.6 विषय के अनुसार , विषय एक प्रमाण पत्र के लिए रिक्त हो सकता है जिसका विषय CA नहीं है जब तक कि विषयअनाम महत्वपूर्ण है।

लेकिन जब मैं एक खाली प्रतिष्ठित_नाम अनुभाग के साथ इस विन्यास फाइल का उपयोग करता हूं:

# request.config
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:certtest@example.com

और आज्ञा देता है

openssl genrsa 1024 > key.pem
openssl req -new -key key.pem -out req.pem -config request.config

OpenSSL की शिकायत:

error, no objects specified in config file
problems making Certificate Request

जवाबों:


11

यह मेरे लिए काम किया:

परीक्षण-नहीं- cn.cnf फ़ाइल

[req] 
default_bits       = 4096
encrypt_key        = no
default_md         = sha256
distinguished_name = req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:certtest@example.com,URI:http://example.com/,IP:192.168.7.1,dirName:dir_sect

[dir_sect]
C=DK
O=My Example Organization
OU=My Example Unit
CN=My Example Name

CSR जनरेट करें

openssl req -new -newkey rsa:4096 -nodes -config test-no-cn.cnf -subj "/" -outform pem -out test-no-cn.csr -keyout test-no-cn.key

CSR पर हस्ताक्षर करें

openssl x509 -req -days 365 -in test-no-cn.csr -signkey test-no-cn.key -out test-no-cn.crt -outform der -extensions v3_req -extfile test-no-cn.cnf

परिणामी प्रमाण पत्र देखें

openssl x509 -inform der -in test-no-cn.crt -noout -text

8

मैं इस "कोई ऑब्जेक्ट निर्दिष्ट नहीं" त्रुटि में भी भाग गया। यह विभिन्न क्षेत्रों के लिए इस तरह एक संकेत प्रदर्शित कर रहा था:

US []:

और मैं सिर्फ एंटर दबा रहा था क्योंकि मैंने इन मानों को पहले ही .cnf फाइल में सेट कर दिया था। यह पता चला है कि मुझे सभी मूल्यों को फिर से टाइप करने की आवश्यकता है, और फिर यह काम किया।


मुझे भी यही करना था। कॉन्फ़िगरेशन फ़ाइल में मान डालने के बावजूद, इसने मुझे फिर से सभी डीएन घटकों के लिए प्रेरित किया। मुझे उन्हें दोहराना था, लेकिन इसने कम से कम काम किया।
नैट डब्ल्यू।

3
ऐसा इसलिए है क्योंकि कॉन्फ़िग फ़ाइल में वास्तव में डिफ़ॉल्ट मान नहीं थे। C = USइसका अर्थ है कि C के लिए "संकेत" "US" है, डिफ़ॉल्ट मान नहीं। इसके बजाय, फ़ाइल में होना चाहिए C = Countryऔर C_default = US
जोर्डनबटकर

5
ओह, और यह केवल अगर है prompt = yes [or blank]। यदि prompt = noतब C = USइसका मतलब "यूएस" डिफ़ॉल्ट मान होता है।
जोर्डनबैकर

3

समस्या prompt = noमूल कॉन्फ़िगरेशन में है। यह openssl reqमान लेता है कि आप कॉन्फ़िग फ़ाइल में विषय प्रविष्टियाँ निर्दिष्ट करने का इरादा रखते हैं और req.c में एक प्रारंभिक जाँच हिट करते हैं

वर्कअराउंड है: निकालें prompt = no, और इसके बजाय -subj /अपनी openssl reqकमांड लाइन में जोड़ें । यहां एक उदाहरण स्क्रिप्ट है जो एक सीएसआर और एक स्व-हस्ताक्षरित प्रमाण पत्र दोनों का उत्पादन करती है:

cat > openssl.cnf <<EOF
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:certtest@example.com
EOF
openssl req -newkey rsa:2048 -config openssl.cnf -nodes -new -subj "/" \
  -out req.csr
openssl req -newkey rsa:2048 -config openssl.cnf -nodes -new -subj "/" \
  -x509 -out cert.crt

2

खुलता कॉन्फ़िगरेशन फ़ाइल में नीति अनुभागों में "सामान्य नाम = वैकल्पिक" का प्रयास करें।


1

ऐसा लगता है कि आप अपने कीबोर्ड से '' प्रतिष्ठित_नाम '' समूह से कोई भी एक मान दर्ज करते हैं और यह ठीक काम करता है ... मेरा मतलब है कि आपको अन्य मूल्यों में प्रवेश करने की आवश्यकता नहीं है और उनके डिफ़ॉल्ट का उपयोग कर सकते हैं (जैसा कि Opensl.conf फ़ाइल में बताया गया है)

[ req ]
...
distinguished_name = req_distinguished_name
prompt = no
...

Should work fine.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.