OpenSSL और पढ़ने में त्रुटि Opensl.conf फ़ाइल


119

मैं विंडोज़ एक्सपी 32 बिट चला रहा हूं

मैंने अभी निम्न URL से Openssl डाउनलोड किया है और इसे स्थापित किया है। http://www.slproweb.com/products/Win32OpenSSL.html

और फिर मैंने निम्नलिखित कमांड का उपयोग करके एक स्व-हस्ताक्षरित प्रमाण पत्र बनाने की कोशिश की

openssl req -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem

तब इसने निम्नलिखित त्रुटि देनी शुरू कर दी

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

फिर कुछ देर गुगली करने के बाद मैंने उपरोक्त कमांड को बदल दिया

openssl req -config C:\OpenSSL\bin\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem

लेकिन अब मुझे कमांड प्रॉम्प्ट में निम्नलिखित त्रुटि मिलती है

C की लाइन -1 पर त्रुटि: \ OpenSSL \ bin \ opensl.conf
4220: त्रुटि: 02001002: सिस्टम लाइब्रेरी: fopen: ऐसी कोई फ़ाइल या निर्देशिका नहीं:। \ crypto \ bio \ bss_file.c: 126: fopen ('C:। \ OpenSSL \ bin \ opensl.conf ',' rb ') 4220: त्रुटि: 2006D080: BIO दिनचर्या: BIO_new_file: ऐसी कोई फ़ाइल नहीं:। \ Crypto \ bio / bss_file.c: 129:
4220: त्रुटि: 0E078072: कॉन्फ़िगरेशन फ़ाइल रूटीन फ़ाइल। : DEF_LOAD: ऐसी कोई फ़ाइल नहीं:। \ Crypto \ conf \ conf_def.c: 197:

कृपया मदद कीजिए। अग्रिम में धन्यवाद।


3
सटीक फ़ाइल नाम जांचें: opensl.conf ---> opensl.cnf
Mark

2
Windows पर फ़ाइल एक्सटेंशन अब .cfg है। यह भी सुनिश्चित करें कि निर्दिष्ट किए गए फ़ाइल पथ (कमांड लाइन पर या वातावरण चर OPENSSL_CONF में) उद्धरण के अंदर नहीं है।
tatx

फ़ाइल एक्सटेंशन (.cnf / .cfg) OpenSSL को स्थापित करने के लिए उपयोग किए गए के आधार पर भिन्न होता है। एक WampServer v3.2.2 स्थापित पर मैंने अभी-अभी कॉन्फ़िगरेशन फ़ाइल नाम खोला था .sl.cnf। मैंने एक विंडो 10 64-बिट इंस्टॉलेशन शाइनिंग पाथ प्रोडक्शंस से भी किया। उस इंस्टॉलेशन में फ़ाइल का नाम Opensl.cfg था। OpenSSL कॉन्फ़िगरेशन फ़ाइल एक्सटेंशन नामों में यह अंतर संकलित निर्भर करता है। मैंने अभी तक परीक्षण नहीं किया है कि कौन सा एक्सटेंशन नाम OpenSSL v1.1.1g द्वारा मान्यता प्राप्त है।
बिल वालेंस

जवाबों:


141

विंडोज पर आप पर्यावरण की संपत्ति भी सेट कर सकते हैं OPENSSL_CONF। कमांडलाइन से उदाहरण के लिए आप टाइप कर सकते हैं:

set OPENSSL_CONF=c:/libs/openssl-0.9.8k/openssl.cnf

इसे टाइप करने के लिए आप इसे टाइप कर सकते हैं:

echo %OPENSSL_CONF%

आप इसे कंप्यूटर के पर्यावरण चर के हिस्से के रूप में भी सेट कर सकते हैं, इसलिए सभी उपयोगकर्ताओं और सेवाओं के पास यह डिफ़ॉल्ट रूप से उपलब्ध है। उदाहरण के लिए देखें, Windows NT में पर्यावरण चर और कैसे पर्यावरण चर Windows XP में प्रबंधित

अब आप config स्थान पैरामीटर को पास किए बिना ओपनस् कमांड को चला सकते हैं।


9
धन्यवाद, मेरे लिए काम किया! (OPENSSL_CONF = c: \ opensl-win32 \ bin \ opensl.cfg सेट करें)
वैलेंटाइन हेनिट्ज

@jww ने यह कोशिश की, लेकिन यह मुझे बताता है कि एक अमान्य कमांड है। कोई विचार?
सारा

3
@ सार - setएक विंडोज कमांड है, और इसका मतलब इससे चलाया जाना है cmd.exe। यह एक गैर-विंडोज मशीन पर काम नहीं करेगा। setऔर echoबात पावर शैल में काम नहीं करता है, या तो। आप कुछ इस तरह का उपयोग करेंगे $X=1; Write-Output $X
jw

@jww धन्यवाद। मैं एक विंडोज़ मशीन पर हूँ, लेकिन मैं cmd.exe के बजाय खुलने वाले ..exe में उस कमांड का उपयोग कर रहा था .. मैंने आपकी टिप्पणी पढ़ी और cmd.exe पर गया और इसके बजाय वहाँ सेट कमांड टाइप किया। यह सही ढंग से काम करता है, लेकिन मुझे अभी भी ओपनस्ले। Exe में एक ही त्रुटि मिल रही है, "गलत_path / ssl / filess.c.cnf से कॉन्फिग जानकारी लोड करने में असमर्थ" इसलिए मैंने नीचे दिए गए समाधान को आपके ओपनसीएल निर्देशिका में पैरामीटर -config जोड़ने के लिए कहने की कोशिश की और यह सही काम किया। इसलिए मैं खुश हूं। मदद के लिए धन्यवाद :)
सारा

उत्तर के रूप में चिह्नित किया जाना चाहिए। स्पष्ट रूप से अनावश्यक भी होना चाहिए। यह ओपनएसएसएल विंडोज डिस्ट्रो केवल उदाहरण के लिए पीडब्ल्यूडी के लिए डिफ़ॉल्ट क्यों नहीं है?
stonedauwg

40

बस अपनी कमांड लाइन में पैरामीटर जोड़ें -config c:\your_openssl_path\openssl.cfg, your_openssl_pathवास्तविक स्थापित पथ में बदलते हुए।


महान, इस ब्लॉग पोस्ट ajden.towfeek.se/post/… का अनुसरण करते हुए और साइबरविन के लिए -config कार्यों को भी शामिल $ openssl ca -in server.csr -config /etc/ssl/openssl.cnf करता है। लेकिन ऐसा क्यों नहीं होता है कि -config आदमी ओपनसेल में सूचीबद्ध नहीं होता है? opensl.org/docs/apps/openssl.html
barlop

@nneonneo ने यह और उपरोक्त समाधान की कोशिश की, लेकिन यह मुझे बताता है कि सेट और कॉन्फ़िगरेशन अमान्य कमांड हैं। कोई विचार?
सारा

केवल विंडोज पर काम करता है; कॉन्फ़िगरेशन एक स्वतंत्र कमांड नहीं है (आप इसे अपने ओपनएसएसएल कमांड लाइन में जोड़ते हैं)।
nnonneo

29

बस एक Opensl.cnf फ़ाइल अपने आप को इस तरह बनाएँ चरण 4 में: http://www.flatmtn.com/article/setting-openssl-create-certports

लिंक काम करना बंद करने के बाद संपादित करता है। 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
URL अब नहीं मिला
ग्रेग डोमजन

15
set OPENSSL_CONF=c:/{path to openSSL}/bin/openssl.cfg

सही विस्तार का ख्याल रखें ( खुलता है। cff नहीं cnf)!

मैंने यहाँ से OpenSSL स्थापित किया है: http://slproweb.com/products/Win32OpenSSL.html


स्थापना लिंक ने मदद की, मैंने कहीं और से 0.9.8 डाउनलोड किया और यह काम नहीं कर रहा था। धन्यवाद।
एपिकपांडाफॉर्स

14

यदि आपने अपाचे को OpenSSL के साथ बिन निर्देशिका में नेविगेट किया है। मेरे मामले में डी: \ अपाचे \ बिन।

* ये कमांड्स भी काम करती हैं, अगर आपके पास ओपनसेल की अकेले स्थापना है।

ये आदेश चलाएँ:

openssl req -config d:\apache\conf\openssl.cnf -new -out d:\apache\conf\server.csr -keyout d:\apache\conf\server.pem
openssl rsa -in d:\apache\conf\server.pem -out d:\apache\conf\server.key
openssl x509 -in d:\apache\conf\server.csr -out d:\apache\conf\server.crt -req -signkey d:\apache\conf\server.key -days 365

* यह स्व-हस्ताक्षरित प्रमाण पत्र बनाएगा जिसका उपयोग आप विकास के उद्देश्यों के लिए कर सकते हैं

यदि आप अपाचे को httpd.conf में स्थापित करते हैं तो फिर से इन पर क्लिक करें:

  <IfModule ssl_module>
    SSLEngine on
    SSLCertificateFile "D:/apache/conf/server.crt"
    SSLCertificateKeyFile "D:/apache/conf/server.key"
  </IfModule>

सवाल पूछने वाले साथी ने स्पष्ट रूप से कहा कि वह Win32OpenSSL का उपयोग कर रहा था। अपाचे सामान कहां से आया? यह प्रश्न के लिए प्रासंगिक कैसे है?
jww

3
बेशक, यह ओपनएसएसएल को स्थापित करना है जो अलग से या अपाचे के साथ आता है। मैंने अपाचे को थोड़ा जोड़ा है क्योंकि 95% मामलों में विंडोज पर ओपनएसएसएल को स्थापित करने का कारण यह है कि अपाचे के साथ उपयोग होने जा रहा है।
अर्तुर कदज़ीर

यह उपयोगी है क्योंकि XAMPP में Apache फ़ोल्डर के अंदर OpenSSL शामिल है।
जिमी अडारो

एक आकर्षण की तरह काम करना!
दिव्येश प्रजापति

12

बस व्यवस्थापक के रूप में Opensl.exe चलाने का प्रयास करें।


2
आपको उन्हें काम करने के लिए एक प्रशासक के रूप में इन आदेशों को नहीं चलाना चाहिए। अंतर्निहित समस्या को ठीक करना बेहतर है।
jww

यदि यह सिस्टम ड्राइव पर प्रोग्राम फाइल डायरेक्टरी में स्थापित है, तो उन्नत अधिकारों के साथ कमांड चलाना आवश्यक है, आपके पास अन्यथा लिखित अनुमति नहीं है।
कोडमैनएक्स

1
इसने मेरे लिए काम किया। मुझे नहीं पता कि यह एक्सेस करने की कोशिश क्यों कर रहा था C:\Program Files\Common Files\SSL/openssl.cnfऔर फिर जब एडमिन के रूप में चल रहा था तो अचानक यह ध्यान नहीं मिला कि यह नहीं मिला (और फ़ाइल भी नहीं बनाई) लेकिन यह मेरे लिए काम करता है इसलिए मुझे कोई फर्क नहीं पड़ता या तो।
सिमोन_विवर

7

मैं बस Windows बिन फ़ोल्डर के लिए Apache से खुलता है। मेरे पास -config द्वारा निर्दिष्ट झंडा था, जो कि opensl.cnf फ़ाइल के पथ में एक टाइपो था। मुझे लगता है कि आप पाएंगे

openssl req -config C:\OpenSSL\bin\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem

होना चाहिए

openssl req -config "C:\OpenSSL\bin\openssl.cnf" -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem

नोट: conf शायद होना चाहिए cnf


4

यदि ओफ़्स्सेल इंस्टॉलेशन सफल था, तो कॉन्फ़िग फ़ाइल का पता लगाने और पथ को सेट करने के लिए c ड्राइव में "OPENSSL" खोजें।

set OPENSSL_CONF=<location where cnf is available>/openssl.cnf

इसने मेरे लिए काम किया।


3

इस वर्कअराउंड ने मुझे मेरी नौकरी (टेक सपोर्ट) में इतनी मदद की, हमने एक साधारण बैच फ़ाइल बनाई जिसे हम कहीं से भी चला सकते थे (हमारे पास इसे स्थापित करने की अनुमति नहीं थी)। यह वर्कअराउंड चर सेट करेगा और फिर आपके लिए ओपनएसएसएल चलाएगा। यह आपके लिए बिन फ़ोल्डर भी खोलता है (इसका कारण यह है कि आपके द्वारा बनाई गई या संशोधित की गई कोई भी फ़ाइल सहेज ली जाएगी)। इसके अलावा, यह केवल विंडोज के लिए है।

स्थापित कैसे करें:

  1. यहां ओपनएसएसएल बायनेरी डाउनलोड करें । (ध्यान दें कि यह संस्करण 0.9.8h के साथ काम करने की पुष्टि की गई है।)
  2. इस कोड को StartOpenSSL.bat नामक फ़ाइल में कॉपी करें। इसे अपनी पसंद के स्थान पर सहेजें। इसे कहीं से भी चलाया जा सकता है।

    @echo off
    title OpenSSL
    
    cd\openssl\bin
    
    if exist "C:\openssl\share\openssl.cnf" (
    
    set OPENSSL_CONF=c:/openssl/share/openssl.cnf
    start explorer.exe c:\openssl\bin
    
    echo Welcome to OpenSSL
    
    openssl
    
    ) else (
    
    echo Error: openssl.cnf was not found
    echo File openssl.cnf needs to be present in c:\openssl\share
    pause
    
    )
    
    exit
    
  3. एक बार जब आप ओपनएसएसएल बायनेरिज़ डाउनलोड कर लेते हैं, तो उन्हें ओपन सीएलएल नामक फ़ोल्डर में अपने सी ड्राइव में निकालें। (पथ को C: \ OpenSSL होना आवश्यक है)। किसी भी फ़ोल्डर की सामग्री को इधर-उधर न करें, बस उन्हें फ़ोल्डर में निकालें।
  4. आप ओपनएसएसएल का उपयोग करने के लिए तैयार हैं। यह विंडोज उपयोगकर्ताओं के लिए एक बहुत अच्छा समाधान है, जिनके पास इसे स्थापित करने के लिए विशेषाधिकार नहीं हैं क्योंकि इसके लिए कोई अनुमति नहीं है। बस इसे डबल क्लिक करके पहले से बैट फ़ाइल चलाएँ।

2

यहां समस्या यह है कि ISN'T एक Opensl.cnf फाइल है जो GnuWin32 के साथ दी गई है। आपको इसे बनाना होगा। आप यहाँ जाकर एक Opensl.cnf फ़ाइल बनाने के लिए HOW का पता लगा सकते हैं:

http://www.flatmtn.com/article/setting-ssl-certificates-apache

यह कैसे करना है पर यह आप के लिए यह सब देता है।

कृपया ध्यान दें: अंत में दिए गए बैकस्लैश के साथ दिया गया ओपनसेल कमांड UNIX के लिए है। विंडोज के लिए: 1) बैकस्लैश को हटा दें, और 2) दूसरी लाइन को ऊपर ले जाएं ताकि यह पहली लाइन के अंत में हो। (तो आपको सिर्फ एक आदेश मिलता है।)

ALSO: टिप्पणियों के माध्यम से पढ़ना बहुत महत्वपूर्ण है। कुछ बदलाव हैं जो आप उन पर आधारित करना चाहते हैं।


2

मेरे पास विंडोज पर एक ही मुद्दा था। इसे निम्नानुसार पर्यावरण चर सेट करके हल किया गया था:

परिवर्तनीय नाम: OPENSSL_CONF परिवर्तनीय मूल्य: C: (OpenSSl निर्देशिका) \ bin \ opensC.cnf


1

अगर आपको कोई त्रुटि दिखाई दे रही है जैसे

लाइन -1 सी पर त्रुटि: apacheconfopenssl.cnf

बैक-स्लैश से फ्रंट-स्लैश को -config में बदलने की कोशिश करें।


1

https://github.com/xgqfrms-gildata/App001/issues/3

  1. पहले, सुनिश्चित करें कि आपके पास openssl.cnfसही रास्ते में एक फ़ाइल है;
  2. यदि आप इसे नहीं ढूंढ सकते हैं, तो बस एक डाउनलोड करें और इसे अपने सेटिंग पथ पर कॉपी करें।
$ echo %OPENSSL_CONF%

$ set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cnf

ओपनएसएसएल और नोड.जेएस
xgqfrms

C: \ OpenSSL \
_

@SnehalDwivedi मेरे बताये अनुसार चरणों का पालन करें।
xgqfrms

0

कमांड को व्यवस्थापक के रूप में चलाएं और कॉन्फ़िगर फ़ाइल को उस जगह पर कॉपी करें जहां आपने अधिकार पढ़ा है और -config पैरामीटर के साथ पथ निर्दिष्ट करें।


0

मुझे पता है कि यह पुराना है - लेकिन सोचा कि इस पर होने वाले अन्य (और विज़ुअल स्टूडियो का उपयोग करें) लाभ हो सकता है। मैंने इसे एक और पोस्ट पर पढ़ा जिसे मैं ढूंढ नहीं सकता।

नोटपैड ++ में अपना कॉन्फ़िगरेशन खोलें और सुनिश्चित करें कि यह एन्कोडिंग UTF-8 है (यानी, UTF-8-BOM * नहीं)।

इसने मुझे बहुत कुछ खोज / परीक्षण करने के लिए बचाया है।


0

मुझे पता है कि यह सवाल पुराना है लेकिन यहाँ है कि मैंने इसे कैसे हल किया।

मैंने निर्देशिका openssl.cnfसे फ़ाइल binको मूल निर्देशिका में कॉपी किया है जो C:/Openssl/openssl.cnfइसके बजाय C:/Openssl/bin/openssl.cnfठीक है और ठीक काम किया है।

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