ওপেনসেল "কনফিগারেশনে 'বিশিষ্ট_নাম' খুঁজে পেতে অক্ষম"


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কোনও ধরণের অভ্যন্তরীণ কনফিগারেশনকে ওভাররাইড করছে; যদি আপনি ওপেনসেল রেকর্ডের জন্য ম্যান পৃষ্ঠার জন্য "উদাহরণগুলি" বিভাগটি দেখেন তবে এটি এতে একটি কনফিগার ফাইলের উদাহরণ দেখায় 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}আক্ষরিক নয়; আপনার এটিকে আপনার ডিএনএস ডোমেন নাম দিয়ে প্রতিস্থাপন করা উচিত; আমি এই ফাইলটি একটি bashস্ক্রিপ্টে তৈরি করি cat >"$OPTIONS_FILE" <<EOF, উপরেরটিকে অনুসরণ করে, তারপরে অনুসরণ করব EOF)

openssl req … -subj <my subject> -config <that file> …তারপরে কমান্ড লাইন থেকে আমার বিষয় নিয়েছে took আগ্রহীদের জন্য, পুরো কমান্ডটি দেখতে এমনভাবে শেষ হয়েছিল:

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"

এই পোস্টিং হিসাবে, আমার বোধগম্যতা হল যে -sha256এসএইএ -1 X.509 শংসাপত্রের জন্য অবচিত করা হয়েছে। সুতরাং (যা একটি অনিবন্ধিত পতাকা ...), এবং সাবজেক্টআল্টনেম প্রয়োজনীয় হয়ে উঠছে ² তাই কনফিগারেশনের প্রয়োজন need উপরের দিকে একটি সেরা-অনুশীলন সিএসআর উত্পন্ন করার জন্য আমি কেবলমাত্র অতিরিক্ত গোটচাকে জানি যে আপনার কমপক্ষে 2048 বিটের একটি আরএসএ কী আকার ব্যবহার করা উচিত (আপনি যদি আরএসএ ব্যবহার করছেন তবে আমি যা); বর্তমান ডিফল্টটি নিরাপত্তাহীন হওয়ায় আপনাকে অবশ্যইopenssl genrsa কমান্ডের আকারটি নির্দিষ্ট করতে হবে

"আমি যখন এটি লিখছি তখন ভাঙ্গা না থাকলে, লোকেরা মনে করে যে এটি কেবল সময়ের বিষয়। দেখুন "ধীরে ধীরে sunsetting SHA1 এ"
ডোমেইন-নামের জন্য ²Using সিএন আর বাঞ্ছনীয়; আমি নিশ্চিত নই / কখন ব্রাউজারগুলি এটি হ্রাস করার পরিকল্পনা করে। "বিষয়টির সাধারণ নামটিতে ডোমেন নামের মতো স্ট্রিংগুলি অন্তর্ভুক্ত করা ও চেক করা থেকে দূরে সরে যান।", আরএফসি 6125
দ্রষ্টব্য: আমি এর "সঠিক" মান সম্পর্কে কম নিশ্চিত keyUsage


2
প্রশ্নে আমার নোট দেখুন; এই উত্তরের কনফিগারটি অবৈধ, এতে *.*.example.comবৈধ নয় (আপনার একাধিক *গুলি থাকতে পারে না ); সি / পি-এর সাবধান।
থানাটোস

খালি বিভাগটি req_distinguished_nameওপেনসেল ১.১.০ এফ দ্বারা গৃহীত নয়, সুতরাং আপনার কমপক্ষে countryName_defaultসেখানে থাকতে হবে ( ওপেনএসএলসিএনএফ ওয়াকথ্রু দেখুন )।
আন্তোনকে

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
এটিও কাজ করবে; আমি বিষয়টি কমান্ড লাইনে উল্লেখ করছিলাম (এটি আমার ব্যবহারের ক্ষেত্রে সহজ); এটি কেবল এটি কনফিগার ফাইলে নিয়ে যায়। আরও, ওপেনএসএসএল সম্পর্কিত আমার প্রশ্নটি অভিযোগ করে যে বিষয়টি যখন সুনির্দিষ্টভাবে নির্দিষ্ট করা হয়েছিল তখন এটি পাওয়া যায়নি।
থানাটোস

আমি নিশ্চিত না যে এই সমাধানটি কাজ করে কিনা - উইন্ডোজে এটি নিয়মিত "কনফিগারেশনে বিশিষ্ট_নাম খুঁজে পেতে অক্ষম" প্রতিবেদন করে সমস্ত কিছু চেষ্টা করে।
হাগুবিয়ার

1
req_distinguished_nameঅধ্যায় বাম ফাঁকা হতে পারে। এটি যা করে তা হল প্রয়োজনীয় ক্ষেত্রের নামগুলির লেবেলের টেম্পলেট নির্দিষ্ট করা, যা -subj= /C=xx/ST=xx/L=xx/O=xx/OU=xx/CN=xxইত্যাদি দ্বারা ওভাররাইট করা যেতে পারে , এটি ক্ষেত্রের মানগুলি নির্ধারণ না করেই not
ডেভি

5

আমার জন্য এই ত্রুটিটি মনে হয়েছে উইন্ডোজ সার্ভার ২০১২-তে কমান্ডটি চালনার সময় ভুল পথ তৈরির কারণে হয়েছিল, C:\OpenSSL-Win32\bin

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

পাস ফের জিজ্ঞাসা করার আগে কোন অ-ব্লক করা ত্রুটিটি আউটপুট দেয়:

সি খুলতে পারে না: \ প্রোগ্রাম ফাইল (x86) \ প্রচলিত ফাইলগুলি reading এসএসএল / ওপেনএসএল.সিএনএফ পড়ার জন্য, কোনও উচ্ছ ফাইল বা ডিরেক্টরি নেই

স্পষ্টতই, ভুল স্ল্যাশের কারণে পাথটি অবৈধ, সুতরাং কনফিগার ফাইলটি অবশ্যই স্পষ্টভাবে কমান্ড লাইনে যুক্ত করা উচিত:

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

এটি আমার পক্ষে সুন্দর এবং পরিষ্কার কাজ করেছে। অনেক ধন্যবাদ!
সোসেনবিন্দার

যদিও এটি কোনও সন্দেহ আপনার সমস্যা সমাধান করে তবে ডাব্লু / ওপেনএসএসএল বাদ দিয়ে এটি মূল প্রশ্নের সাথে সম্পর্কিত নয়। (এটি পৃথক প্রশ্ন / উত্তর হিসাবে ভাল হতে পারে))
থানাটোস

ধন্যবাদ "
ওপেনসেল

1

এই একই ত্রুটি:

$ openssl req -x509 -newkeyaaa: 4096 -keyout _key.pem -out cert.pem -days 365 -নোডস আপনাকে এমন তথ্য লিখতে বলা হচ্ছে যা আপনার শংসাপত্রের অনুরোধে অন্তর্ভুক্ত হবে। আপনি যা প্রবেশ করতে চলেছেন সেটিকেই একটি বিশিষ্ট নাম বা ডিএন বলা হয়। বেশ কয়েকটি ক্ষেত্র রয়েছে তবে আপনি কিছু খালি রাখতে পারেন কিছু ক্ষেত্রের জন্য একটি ডিফল্ট মান থাকবে, যদি আপনি প্রবেশ করেন '।', ক্ষেত্রটি ফাঁকা ছেড়ে যাবে। ----- দেশের নাম (২ টি বর্ণ কোড) [এউ]: শংসাপত্রের অনুরোধ তৈরি করতে সমস্যা

(উবুন্টু 17.04) এর অর্থ "আপনাকে যুক্ত করা দরকার

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

কমান্ড লাইনে "FWIW।


0

আর একটি সম্ভাব্য সমস্যা বিশেষ (অদৃশ্য) ইউটিএফ -8 অক্ষর হতে পারে। আপনার ফাইলটি ব্যবহার করে পরীক্ষা করুন

cat -v $OPTIONS_FILE
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.