windows - OpenSSL og fejl i læsning openssl.conf fil

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg kører Windows XP 32bit


Jeg har lige hentet Openssl fra følgende webadresse og installeret den.
http://www.slproweb.com/products/Win32OpenSSL.html[18]


og så forsøgte jeg at oprette et selv underskrevet certifikat ved at bruge følgende kommando


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


så begyndte det at give følgende fejl



  Kan ikke indlæse konfigurationsinfo fra/usr/local/ssl/openssl.cnf



Derefter efter googling engang ændrede jeg ovenstående kommando til


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


Men nu får jeg den følgende fejl i kommandoprompten



  fejl på linje -1 i C: \ OpenSSL \ bin \ openssl.conf

  4220: fejl: 02001002: systembibliotek: fopen: Ingen sådan fil eller
  mappe:. \ krypto \ bio \ bss\_file.c: 126: fopen ( 'C: \ OpenSSL \ bin \ openssl.conf', 'rb')
  4220: fejl: 2006D080: BIO-rutiner: BIO\_new\_file: nej sådan
  fil:. \ krypto \ bio \ bss\_file.c: 129:

  4220: fejl: 0E078072: konfigurationsfilrutiner: DEF\_LOAD: nej sådan
  fil:. \ krypto \ conf \ conf\_def.c: 197:



Hjælp venligst.
Tak på forhånd.

Bedste reference


På Windows kan du også indstille miljøegenskaben OPENSSL\_CONF. For eksempel fra kommandolinjen kan du skrive:


set OPENSSL\_CONF=c:/libs/openssl-0.9.8k/openssl.cnf


at validere det kan du skrive:


echo \%OPENSSL\_CONF\%


Du kan også indstille den som en del af computerens miljøvariabler, så alle brugere og tjenester har det som standard. Se f.eks. Miljøvariabler i Windows NT og Sådan styres miljøvariabler i Windows XP. [19] [20]


Nu kan du køre openssl kommandoer uden at skulle passere config location parameteren.

Andre referencer 1


Tilføj blot din kommandolinje parameteren -config c:your\_openssl\_pathopenssl.cfg, skift your\_openssl\_path til den rigtige installerede sti.

Andre referencer 2


Opret bare en openssl.cnf fil selv som denne i trin 4: http://www.flatmtn.com/article/setting-openssl-create-certificates[21]


Rediger, efter at linket ikke længere fungerer
Indholdet af filen openssl.cnf var følgende:


#
# 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


Du kan stadig finde siden ved hjælp af Waybackmachine: https://web.archive.org/web/20171108102046/http://www.flatmtn.com/article/setting-openssl-create-certificates[22]

Andre referencer 3


Bare prøv at køre openssl.exe som administrator.

Andre referencer 4


set OPENSSL\_CONF=c:/{path to openSSL}/bin/openssl.cfg


sørg for den rigtige udvidelse ( openssl.cfg ikke cnf)!


Jeg har installeret OpenSSL herfra: http://slproweb.com/products/Win32OpenSSL.html[23]

Andre referencer 5


Hvis du har installeret Apache med OpenSSL, navigerer du til bin-mappen. I mit tilfælde D: \ apache \ bin.


* Disse kommandoer fungerer også, hvis du har stand-alone installation af openssl.


Kør disse kommandoer:


openssl req -config d:apacheconfopenssl.cnf -new -out d:apacheconfserver.csr -keyout d:apacheconfserver.pem
openssl rsa -in d:apacheconfserver.pem -out d:apacheconfserver.key
openssl x509 -in d:apacheconfserver.csr -out d:apacheconfserver.crt -req -signkey d:apacheconfserver.key -days 365


* Dette skaber selvsigneret certifikat, som du kan bruge til udviklingsformål


Igen, hvis du har installeret Apache i httpd.conf, skal du holde følgende:


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

Andre referencer 6


Jeg har lige haft en lignende fejl ved at bruge openssl.exe fra Apache til Windows Bin-mappen. Jeg havde -konfig-flagmet angivet ved at have en skrivefelt i stien til opensl.cnf-filen. Jeg tror du finder det


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


burde være


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


Bemærk: conf skal nok være cnf .

Andre referencer 7


Hvis openssl-installationen var succesfuld, søg efter 'OPENSSL' i c-drev for at finde config-filen og indstille stien.


set OPENSSL\_CONF=<location where cnf is available>/openssl.cnf


Det fungerede for mig.

Andre referencer 8


Problemet her er, at der ikke findes en openssl.cnf-fil med GnuWin32 openssl stuff. Du skal oprette den. Du kan finde ud af, hvordan du opretter en openssl.cnf-fil ved at gå her:


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


Hvor det lægger alt for dig om hvordan man gør det.


BEMÆRK: OpenSL-kommandoen, der er givet med backslashet i slutningen, er for UNIX. For Windows: 1) Fjern backslash, og 2) Flyt den anden linje op, så den er i slutningen af ​​første linie. (Så du får kun en kommando.)


OGSÅ: Det er meget vigtigt at læse gennem kommentarer. Der er nogle ændringer, du måske vil gøre baseret på dem.

Andre referencer 9


Hvis du ser en fejl noget lignende



  fejl på linje -1 c: apacheconfopenssl.cnf



Prøv at skifte fra tilbage skråstreg til front skråstreg i -konfig.

Andre referencer 10


Kør kommandoen som administrator og kopier konfigurationsfilen til et sted, hvor du har læse rettigheder og angive stien med parameteren -config.

Andre referencer 11


Denne løsning har hjulpet os så meget i mit job (Teknisk Support), vi lavede en enkel batchfil, vi kunne køre fra hvor som helst (vi havde ikke tilladelserne til at installere det). Denne løsning vil indstille variablen og derefter køre OpenSSL for dig. Det åbner også bin-mappen for dig (fordi det er her, hvor filer, du opretter eller ændrer, gemmes). Også dette er kun til Windows.


Sådan opsættes:




  1. Download OpenSSL-binarierne her. (Bemærk at dette er bekræftet for at arbejde med version 0.9.8h.)

  2. Kopier denne kode til en fil ved navn StartOpenSSL.bat. Gem dette til et sted efter eget valg. Det kan køres fra hvor som helst. [25]


    @echo off
    title OpenSSL
    
    cdopensslin
    
    if exist "C:opensslshareopenssl.cnf" (
    
    set OPENSSL\_CONF=c:/openssl/share/openssl.cnf
    start explorer.exe c:opensslin
    
    echo Welcome to OpenSSL
    
    openssl
    
    ) else (
    
    echo Error: openssl.cnf was not found
    echo File openssl.cnf needs to be present in c:opensslshare
    pause
    
    )
    
    exit
    

  3. Når du har downloadet OpenSSL-binarierne, skal du udpakke dem til dit C-drev i en mappe med titlen OpenSSL. (Stien skal være C: \ OpenSSL). Flyt ikke nogen af ​​mappernes indhold rundt, blot tag dem ud i mappen.

  4. Du er klar til at bruge OpenSSL. Dette er en fantastisk løsning for Windows-brugere, som ikke har privilegierne til at installere det, da det ikke kræver nogen tilladelser. Bare kør batfilen fra tidligere ved at dobbeltklikke på den.


Andre referencer 12


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



  1. Først skal du sørge for at have en openssl.cnf fil på den rigtige vej;

  2. Hvis du ikke kan finde den, bare [27] download en og kopier den til din indstillingssti.



$ echo \%OPENSSL\_CONF\%

$ set OPENSSL\_CONF=C:OpenSSLinopenssl.cnf