विंडोज पर /usr/local/ssl/openssl.cnf से कॉन्फिगर जानकारी लोड करने में असमर्थ


183

Windows पर OpenSSL का उपयोग करते समय:

openssl genrsa -out privatekey.pem 1024 -->

सफलतापूर्वक बनाया गया

openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 
---->

के रूप में त्रुटि संदेश दिखा रहा है

/usr/local/ssl/openssl.cnf से कॉन्फ़िगर जानकारी लोड करने में असमर्थ


3
सभी उत्तरों से पता चलता है कि किसी न किसी को कॉन्फिगर फाइल को रेफर करना चाहिए। इसे कौन बनाता है, ?? इसकी सामग्री क्या है?
जॉडोटॉट

जवाबों:


170

ओपनएसएसएल स्थापित करने के बाद मुझे एक नया पर्यावरण चर बनाने की आवश्यकता थी:

  • नाम: OPENSSL_CONF
  • मान: C:\Program Files\OpenSSL\openssl.cnf

शक्तियों में:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL\openssl.cnf"

यह मान पिछले स्थापना संस्करणों से भिन्न होता है (जैसा कि इस पोस्ट के पिछले संपादन में देखा गया है)। इसके अलावा, ${env:ProgramFiles}\OpenSSLअपने पथ में खुलता द्विआधारी फ़ोल्डर जोड़ने के लिए मत भूलना ।


16
संस्करण 1.0.1j पर मुझे C:\OpenSSL-Win32\bin\openssl.cfgइसके बजाय उपयोग करना था।
केविन पैंको

7
या C: \ OpenSSL-Win64 \ बिन \ 64bits प्रणालियों में openssl.cfg
borjab

13
या C:\Program Files (x86)\Git\ssl\openssl.cfgपहले से ही गिट के साथ उन लोगों के लिए।
kspearrin

आप इस मान को कहां / कैसे स्थापित कर रहे हैं?
मैथ्यू_360

यह आपके उपयोगकर्ता के स्टार्टअप वातावरण में डाल देगा:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
रॉस प्रेसर

78

आपको कॉन्फ़िगरेशन के पूर्ण पथ को निर्दिष्ट करना चाहिए, कुछ इस तरह से:

openssl req -x509 -config "C:\OpenSSL-Win64\bin\openssl.cnf" ...

36
-config C: \ OpenSSL-Win64 \ bin \ opensl.cnf
TimK

4
संस्करण में 1.0.1e से डाउनलोड slproweb.com/products/Win32OpenSSL.html वहाँ केवल फ़ाइल openssl.cfgस्थापना के बाद बिन निर्देशिका में मौजूद। लेकिन इस फ़ाइल के साथ यह वैसे भी काम करने लगता है।
vanje

9
यदि आप GIT के साथ दिए गए OpenSSL का उपयोग कर रहे हैं तो आप कोशिश कर सकते हैं-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
जोएल बी

2
Opensl: त्रुटि: '-config' एक अमान्य कमांड है। आप लोग इसे कैसे सेट करते हैं?
बेनेज़

1
@kewlbfy देखिए @Kosar जवाब के लिए नीचे का उपयोग करें कि -configझंडा कहाँ है , इसने मेरे लिए काम किया
danjah

35

विंडोज 10 में, प्रशासक के मोड में पुनः आरंभ करने और न ही चलाने की आवश्यकता है, लेकिन इसके बजाय सेट करता है।

set OPENSSL_CONF=C:\Program Files (x86)\GnuWin32\share\openssl.cnf

बेशक, यदि आप उपयोग कर रहे हैं GnuWin32


20

खिड़कियों में, [ समान परिदृश्य ]

मैं एक ही समस्या का सामना कर रहा था, लेकिन यह प्रमाणपत्र हस्ताक्षर अनुरोध के लिए अनुरोध करने के दौरान था।

मैंने नीचे किया, यह मेरे लिए काम किया।

एक बार OpenSSL स्थापित होने के बाद, सिस्टम रीबूट होने के बाद रैन कमांड प्रशासक के रूप में संकेत करता है। [सबसे अच्छा मैंने दोनों के लिए .. व्यवस्थापक और सिस्टम रिबूट के रूप में चलाया]

किया, 1. [त्रुटि प्रकरण]

C:\OpenSSL-Win64\bin>openssl req -new -key server.key -out server.csr

चेतावनी: कॉन्फ़िगर फ़ाइल नहीं खोल सकता: C: \ OpenSSL-Win64 \ bin \ opensl.cnf और C: \ OpenSSL-Win64 \ bin \ opensl.cnf से कॉन्फ़िगरेशन जानकारी लोड करने में असमर्थ

2. [चेतावनी के साथ काम किया]

C:\OpenSSL-Win64\bin> openssl req -new -key server.key -out server.csr -config C:\OpenSSL-Win64\bin\openssl.cfg

[चेतावनी संदेश]: चेतावनी: कॉन्फ़िगर फ़ाइल नहीं खोल सकता: C: \ OpenSSL-Win64 \ bin \ opensC.cnf

लेकिन मुझे सर्वर के लिए पास वाक्यांश के लिए प्रेरित किया । यह मेरे लिए काम किया

मैंने कहा, मेरी सहायता के लिए यह लिंक

धन्यवाद।


धन्यवाद, आपके द्वारा प्रदान किया गया लिंक मेरी बहुत मदद करता है: akadia.com/services/ssh_test_certificate.html
leole

15

इस स्थिति में मेरे लिए काम करने वाली एकमात्र चीज़ थी स्वयं निर्मित Opensl.cnf फ़ाइल

यहाँ इस अभ्यास के लिए आवश्यक मूलभूत बातें हैं (आवश्यकतानुसार संपादित करें):

#
# OpenSSL configuration file.
#

# Establish working directory.

dir                         = .

[ ca ]
default_ca                  = CA_default

[ CA_default ]
serial                      = $dir/serial
database                    = $dir/certindex.txt
new_certs_dir               = $dir/certs
certificate                 = $dir/cacert.pem
private_key                 = $dir/private/cakey.pem
default_days                = 365
default_md                  = md5
preserve                    = no
email_in_dn                 = no
nameopt                     = default_ca
certopt                     = default_ca
policy                      = policy_match

[ policy_match ]
countryName                 = match
stateOrProvinceName         = match
organizationName            = match
organizationalUnitName      = optional
commonName                  = supplied
emailAddress                = optional

[ req ]
default_bits                = 1024          # Size of keys
default_keyfile             = key.pem       # name of generated keys
default_md                  = md5               # message digest algorithm
string_mask                 = nombstr       # permitted characters
distinguished_name          = req_distinguished_name
req_extensions              = v3_req

[ req_distinguished_name ]
# Variable name             Prompt string
#-------------------------    ----------------------------------
0.organizationName          = Organization Name (company)
organizationalUnitName      = Organizational Unit Name (department, division)
emailAddress                = Email Address
emailAddress_max            = 40
localityName                = Locality Name (city, district)
stateOrProvinceName         = State or Province Name (full name)
countryName                 = Country Name (2 letter code)
countryName_min             = 2
countryName_max             = 2
commonName                  = Common Name (hostname, IP, or your name)
commonName_max              = 64

# Default values for the above, for consistency and less typing.
# Variable name             Value
#------------------------     ------------------------------
0.organizationName_default  = My Company
localityName_default        = My Town
stateOrProvinceName_default = State or Providence
countryName_default         = US

[ v3_ca ]
basicConstraints            = CA:TRUE
subjectKeyIdentifier        = hash
authorityKeyIdentifier      = keyid:always,issuer:always

[ v3_req ]
basicConstraints            = CA:FALSE
subjectKeyIdentifier        = hash

मुझे आशा है कि वह मदद करेंगे।


1
यहाँ सूचीबद्ध हर दूसरे समाधान की कोशिश करने के बाद, यह मेरे लिए काम करता है। एक बार कॉन्फ़िगरेशन बनने के बाद (खुलता है। डायरेक्टरी में) आप फिर चला सकते हैंopenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
जिम्बो

12

ओपनएसएसएल को स्थापित करने के बाद, आपको अपने कंप्यूटर को पुनरारंभ करने और उपयोग करने की आवश्यकता है Run As Administrator। फिर इसके काम करता है।


11

GnuWin32 टूल के साथ मुझे C: \ gnuwin32 \ share के अंतर्गत खुलता है

set OPENSSL_CONF=C:\gnuwin32\share\openssl.cnf

9

विंडोज 8 पर मेरे लिए, मुझे बस Opensl.cnf फाइल मिली और इसे C ड्राइव पर कॉपी किया। फिर:

openssl req -new -key server.key -out server.csr -config C:\openssl.cnf

पूरी तरह से काम किया।



4

मेरे मामले में, मुझे कमांड का उपयोग करके कमांड पर मैन्युअल रूप से Opensl.cnf फ़ाइल का पथ सेट करना होगा config। तो आज्ञा

openssl req -x509 -config "C:\Users\sk\Downloads\openssl-0.9.8k_X64\openssl.cnf" -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 900

3

यदि आप Win32 OpenSSL v1.1.0g का उपयोग कर रहे हैं , तो इस पर्यावरण चर को स्थापित करना:

set OPENSSL_CONF=C:\OpenSSL-Win32\bin\cnf\openssl.cnf

"Server.key" के साथ इस कमांड को चलाने से पहले , सफलतापूर्वक "server.csr" बनाना :

openssl req -new -key server.key -out server.csr

1

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

Https://www.openssl.org/docs/manmaster/man5/config.html,I से सीधे उद्धरण:

"OPENSSL लिब्ररी कंफिगरेशन

एप्लिकेशन मास्टर ओपनएसएसएल कॉन्फ़िगरेशन फ़ाइल या वैकल्पिक रूप से वैकल्पिक कॉन्फ़िगरेशन फ़ाइल का उपयोग करके ओपनएसएसएल के कुछ पहलुओं को स्वचालित रूप से कॉन्फ़िगर कर सकते हैं। ओपनएसएल उपयोगिता में यह कार्यक्षमता शामिल है: कोई भी उप कमांड मास्टर ओपनएसएसएल कॉन्फ़िगरेशन फ़ाइल का उपयोग करता है जब तक कि एक वैकल्पिक कॉन्फ़िगरेशन फ़ाइल का उपयोग करने के लिए उप कमांड में विकल्प का उपयोग नहीं किया जाता है।

लायब्रेरी कॉन्फ़िगरेशन को सक्षम करने के लिए डिफ़ॉल्ट अनुभाग में एक उपयुक्त पंक्ति होनी चाहिए जो मुख्य कॉन्फ़िगरेशन अनुभाग की ओर इशारा करती है। डिफ़ॉल्ट नाम issl_conf है जो खुलता है उपयोगिता द्वारा उपयोग किया जाता है। अन्य एप्लिकेशन myapplication_conf जैसे वैकल्पिक नाम का उपयोग कर सकते हैं। सभी लाइब्रेरी कॉन्फ़िगरेशन लाइनें कॉन्फ़िगरेशन फ़ाइल की शुरुआत में डिफ़ॉल्ट अनुभाग में दिखाई देती हैं।

कॉन्फ़िगरेशन अनुभाग में नाम मान युग्मों का एक सेट शामिल होना चाहिए जिसमें विशिष्ट मॉड्यूल कॉन्फ़िगरेशन जानकारी होती है। नाम कॉन्फ़िगरेशन मॉड्यूल के नाम का प्रतिनिधित्व करता है। मूल्य का अर्थ मॉड्यूल विशिष्ट है: यह, उदाहरण के लिए, कॉन्फ़िगरेशन मॉड्यूल विशिष्ट जानकारी युक्त एक और कॉन्फ़िगरेशन अनुभाग का प्रतिनिधित्व कर सकता है। उदाहरण के लिए: "

तो ऐसा प्रतीत होता है कि किसी व्यक्ति को आपके उपयोग के लिए विशिष्ट अन्य प्रविष्टियों के साथ, आपके विशिष्ट नाम (DN) के अनुसार स्वयं को Opensl.cnf कॉन्फ़िगर करना होगा।

यहां टेम्प्लेट फ़ाइल है जिसमें से आप अपनी विशिष्ट प्रविष्टियों के साथ Opensl.cnf उत्पन्न कर सकते हैं।

एक अनुप्रयोग में वास्तव में एक डेमो स्थापना होती है जिसमें एक डेमो .cnf फ़ाइल शामिल होती है।

इसके अतिरिक्त, यदि आपको प्रोग्रामेटिक रूप से .cnf फ़ाइलों तक पहुँचने की आवश्यकता है, तो आप उपयुक्त हेडर --openssl / conf.h-- शामिल कर सकते हैं और अपनी .cnf फ़ाइलों का उपयोग कर सकते हैं।

CONF_modules_load_file(const char *filename, const char *appname,
                            unsigned long flags);

यहां "CONF_modules_load_file" के लिए डॉक्स दिए गए हैं;


0

कॉल करने से पहले मेरे लिए वेरिएबल डालें

OPENSSL_CONF=/usr/ssl/openssl.cnf openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365

0

विंडोज पॉवर्सशेल पर:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.