खोलता है "विन्यास में 'प्रतिष्ठित_नाम' खोजने में असमर्थ"


40

मुझे निम्न त्रुटि मिलती है openssl req:

unable to find 'distinguished_name' in config
problems making Certificate Request
41035:error:0E06D06C:configuration file routines:NCONF_get_string:no value:/SourceCache/OpenSSL098/OpenSSL098-52.30.1/src/crypto/conf/conf_lib.c:329:group=req name=distinguished_name

मेरी समझ यह है कि यह "विषय" है जो इसे नहीं मिल सकता है ... हालांकि, मैं यह निर्दिष्ट कर रहा हूं :

openssl req -new \
    -key "$PRIVATE_KEY" \
    -sha256 \
    -config "$OPTIONS_FILE" \
    -subj "/C=US/ST=California/L=San Francisco/O=ACME, Inc./CN=*.*.$DOMAIN/" \
    -out "$CSR_FILENAME"

मैनुअल का एकमात्र सुझाव यह है कि कॉन्फ़िगर फ़ाइल मौजूद नहीं है; मैं कर सकता हूँ cat "$OPTIONS_FILE", इसलिए यह निश्चित रूप से वहाँ है, और त्रुटि मैन्युअल त्रुटि नोटों से पहले नहीं है यदि यह ऐसा होता तो इससे पहले होता, इसलिए मुझे यकीन है कि opensslयह कॉन्फिग फाइल देखता है।

मेरी कॉन्फ़िग फ़ाइल में निम्नलिखित शामिल हैं:

[req]
req_extensions = v3_req

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.*.example.com 

... जो डॉक्स में बहुत अधिक शाब्दिक उदाहरण है

मुझसे यहां क्या गलत हो रहा है?


1
माइनर नोट: यहाँ निर्दिष्ट विषय *.*.example.com, अवैध है। (आप केवल 1 *, और केवल सबसे बाएं घटक में हो सकते हैं।) यह यहाँ समस्या से संबंधित नहीं है, लेकिन आँख बंद करके सी / पी नहीं करते हैं।
थानाटोस

जवाबों:


30

पास जैसा कि मैं बता सकता हूं , -configकिसी प्रकार के आंतरिक कॉन्फ़िगरेशन को ओवरराइड कर रहा है; यदि आप ओप्सनल रीक के लिए मैन पेज के लिए "EXAMPLES" अनुभाग देखते हैं , तो यह इसमें एक कॉन्फ़िगर फ़ाइल का एक उदाहरण दिखाता distinguished_nameहै। एक कूबड़ पर, मैंने निम्नलिखित को अपने विन्यास में जोड़ा:

[req]
…
distinguished_name = req_distinguished_name

[req_distinguished_name]
# empty.

इस प्रकार, मेरा पूरा विन्यास कुछ ऐसा दिख रहा था

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name

[req_distinguished_name]

[v3_req]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.*.${DOMAIN}

(ध्यान दें कि यहां ${DOMAIN}शाब्दिक नहीं है; आपको इसे अपने DNS डोमेन नाम से बदलना चाहिए; मैं इस फाइल को एक bashस्क्रिप्ट में बनाता हूं cat >"$OPTIONS_FILE" <<EOF, जिसके बाद ऊपर, उसके बाद EOF)

openssl req … -subj <my subject> -config <that file> …फिर कमांड लाइन से मेरा विषय लिया। रुचि रखने वालों के लिए, पूरा कमांड इस तरह दिख रहा है:

openssl req -new \
    -key "$PRIVATE_KEY" \
    -sha256 \
    -config "$OPTIONS_FILE" \
    -subj "/C=US/ST=California/L=San Francisco/O=My Company, Inc./CN=*.*.$DOMAIN/" \
    -out "$CSR_FILENAME"

इस पोस्टिंग के रूप में, मेरी समझ यह है कि SHA-1 X.509 सीरियलों के लिए पदावनत है, इसलिए -sha256(जो कि एक अविभाजित ध्वज है ...), और subjectAltName आवश्यक होता जा रहा है, इसलिए कॉन्फ़िगरेशन की आवश्यकता है। केवल अतिरिक्त गोटा जिसे मैं ऊपर से सबसे अच्छा अभ्यास सीएसआर उत्पन्न करने के लिए जानता हूं, यह है कि आपको कम से कम 2048 बिट्स के आरएसए कुंजी आकार का उपयोग करना चाहिए (यदि आप आरएसए का उपयोग कर रहे हैं, जो मैं हूं); आपको कमांड को आकार निर्दिष्ट करना होगा openssl genrsaक्योंकि वर्तमान डिफ़ॉल्ट असुरक्षित है।

Thisजब मैं यह लिख रहा हूँ उस समय टूटा नहीं, लोगों को लगता है कि यह केवल समय की बात है। "धीरे-धीरे सूर्यास्त करते हुए देखें SHA1"
डोमेन-नाम के लिए CN का उपयोग करना अब अनुशंसित नहीं है; मुझे यकीन नहीं है कि कब / यदि ब्राउज़र इसे अपग्रेड करने की योजना बना रहे हैं। "विषय के सामान्य नाम में डोमेन नाम की तरह दिखने वाले स्ट्रिंग को शामिल करने और जाँचने से दूर हटें ।", RFC 6125
नोट: मैं "सही" मान के बारे में कम निश्चित हूं keyUsage


2
प्रश्न पर मेरा नोट देखें; इस उत्तर में विन्यास अमान्य है, *.*.example.comइसमें मान्य नहीं है (आपके पास कई *एस नहीं हो सकते हैं ); c / p-ers सावधान रहें।
थानाटोस

req_distinguished_nameOpensl 1.1.0f द्वारा खाली अनुभाग स्वीकार नहीं किया जाता है, इसलिए आपको कम से कम countryName_defaultवहाँ होना चाहिए ( Openssl.conf Walkthru को देखें )।
एंटोनोक

12

मुझे भी यही समस्या थी और यहाँ प्रतिक्रिया मिली:

https://www.citrix.com/blogs/2015/04/10/how-to-create-a-csr-for-a-san-certificate-on-netscaler/

कॉन्फ़िगरेशन फ़ाइल इस तरह दिखती है:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = www.company.com
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.company.com
DNS.2 = company.com
DNS.3 = www.company.net 
DNS.4 = company.net 

और तब:

openssl req -new -key private.key -sha256 -nodes -config openssl.conf -out certificate.csr

1
यह भी काम करेगा; मैं कमांड लाइन पर विषय निर्दिष्ट कर रहा था (जैसा कि मेरे उपयोग के मामले के लिए सरल था); यह बस इसे विन्यास फाइल में ले जाता है। अधिक, OpenSSL से संबंधित मेरा प्रश्न यह शिकायत करता है कि विषय तब नहीं पाया जा सकता है, जब वास्तव में, यह निर्दिष्ट किया गया था।
थानाटोस

मुझे यकीन नहीं है कि अगर यह समाधान काम करता है - विंडोज में यह लगातार रिपोर्ट कर रहा है "विन्यास में प्रतिष्ठित_नाम खोजने में असमर्थ" सब कुछ करने की कोशिश की।
21

1
req_distinguished_nameअनुभाग बाईं खाली हो सकता है। यह क्या करता है कि आवश्यक फ़ील्ड नामों के लेबल के टेम्पलेट को निर्दिष्ट करना है, जिसे -subj= /C=xx/ST=xx/L=xx/O=xx/OU=xx/CN=xxआदि द्वारा अधिलेखित किया जा सकता है , यह उन फ़ील्ड मानों को असाइन नहीं करना है।
देवी

5

मेरे लिए यह त्रुटि विंडोज सर्वर 2012 में कमांड चलाते समय गलत पथ निर्माण के कारण होती है, C:\OpenSSL-Win32\bin

openssl req -new -sha256 -key private.pem -out example.csr

पास फेरे के लिए पूछने से पहले कौन सा गैर-अवरोधक त्रुटि उत्पन्न करता है:

C: \ Program Files (x86) \ Common Files \ SSL / Opensl.cnf को पढ़ने के लिए नहीं खोल सकते, कोई फ़ाइल फ़ाइल या निर्देशिका नहीं है

स्पष्ट रूप से, गलत स्लैश के कारण मार्ग अमान्य है, इसलिए कमांड लाइन में विन्यास फाइल को स्पष्ट रूप से जोड़ा जाना चाहिए:

openssl req -new -sha256 -key private.pem -config openssl.cfg -out example.csr

यह मेरे लिए अच्छा और साफ काम है। आपका बहुत बहुत धन्यवाद!
सोसेंबिंदर

हालांकि यह कोई संदेह नहीं है कि आपकी समस्या हल हो गई है, यह मूल प्रश्न से संबंधित नहीं है, जिसमें w / OpenSSL नहीं है। (यह एक अलग प्रश्न / उत्तर के रूप में बेहतर हो सकता है।)
थानाटोस

इसने मेरे मुद्दे को "विन्यास में 'प्रतिष्ठित_नाम' खोजने में असमर्थता के साथ तय किया" धन्यवाद!
chris31389

1

इसी तरह की त्रुटि:

$ opensl req -x509 -newkey rsa: 4096 -keyout _key.pem -out cert.pem -days 365 -nodes आपसे वह जानकारी दर्ज करने के लिए कहा जाएगा जो आपके प्रमाणपत्र अनुरोध में शामिल की जाएगी। आप जो दर्ज करने वाले हैं, उसे विशिष्ट नाम या डीएन कहा जाता है। काफी कुछ क्षेत्र हैं, लेकिन आप कुछ रिक्त छोड़ सकते हैं। कुछ क्षेत्रों के लिए एक डिफ़ॉल्ट मान होगा, यदि आप '।' दर्ज करते हैं, तो फ़ील्ड खाली छोड़ दिया जाएगा। ----- देश का नाम (2 अक्षर का कोड) [AU]: प्रमाणपत्र अनुरोध करने में समस्याएं

(उबंटू 17.04) का मतलब था "आपको जोड़ना होगा

-subj "/C=US/ST=California/L=San Francis co/O=ACME, Inc./CN=*.*.$DOMAIN/"

कमांड लाइन के लिए "FWIW।


0

एक अन्य संभावित मुद्दा विशेष (अदृश्य) UTF-8 अक्षर हो सकता है। अपनी फ़ाइल का उपयोग करके देखें

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