OpenSSL ed errore nella lettura del file openssl.conf


119

Sto eseguendo Windows XP a 32 bit

Ho appena scaricato Openssl dal seguente URL e l'ho installato. http://www.slproweb.com/products/Win32OpenSSL.html

e poi ho provato a creare un certificato autofirmato utilizzando il seguente comando

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

quindi ha iniziato a dare il seguente errore

Impossibile caricare le informazioni di configurazione da /usr/local/ssl/openssl.cnf

Quindi dopo aver cercato su Google qualche volta ho cambiato il comando sopra in

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

Ma ora ottengo il seguente errore nel prompt dei comandi

errore sulla riga -1 di C: \ OpenSSL \ bin \ openssl.conf
4220: errore: 02001002: libreria di sistema: fopen: nessun file o directory di questo tipo:. \ crypto \ bio \ bss_file.c: 126: fopen ('C: \ OpenSSL \ bin \ openssl.conf ',' rb ') 4220: errore: 2006D080: routine BIO: BIO_new_file: nessun file di questo tipo:. \ Crypto \ bio \ bss_file.c: 129:
4220: errore: 0E078072: routine del file di configurazione : DEF_LOAD: nessun file di questo tipo:. \ Crypto \ conf \ conf_def.c: 197:

Per favore aiuto. Grazie in anticipo.


3
controlla il nome esatto del file: openssl.conf ---> openssl.cnf
Contrassegna il

2
l'estensione del file su Windows ora è .cfg. Assicurati inoltre che il percorso del file specificato (sulla riga di comando o nella variabile d'ambiente OPENSSL_CONF) non sia racchiuso tra virgolette.
tatx

L'estensione del file (.cnf / .cfg) sembra variare a seconda di cosa è stato utilizzato per installare OpenSSL. Su un'installazione di WampServer v3.2.2 ho appena fatto il nome del file di configurazione era openssl.cnf. Ho anche eseguito un'installazione di Windows10 a 64 bit utilizzando i binari di Shining Path Productions. Il nome del file nell'installazione era openssl.cfg. Questa differenza nei nomi delle estensioni dei file di configurazione di OpenSSL sembra dipendere dalla compilazione. Non ho ancora testato quale nome di estensione è riconosciuto da OpenSSL v1.1.1g.
Bill Vallance

Risposte:


141

Su Windows puoi anche impostare la proprietà dell'ambiente OPENSSL_CONF. Ad esempio dalla riga di comando puoi digitare:

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

per convalidarlo puoi digitare:

echo %OPENSSL_CONF%

Puoi anche impostarlo come parte delle variabili ambientali del computer in modo che tutti gli utenti e servizi lo abbiano disponibile per impostazione predefinita. Vedere, ad esempio, Variabili d'ambiente in Windows NT e Come gestire le variabili d'ambiente in Windows XP .

Ora puoi eseguire i comandi openssl senza dover passare il parametro config location.


9
Grazie, ha funzionato per me! (impostare OPENSSL_CONF = c: \ openssl-win32 \ bin \ openssl.cfg)
Valentin Heinitz

@jww ha provato questo ma mi dice che set è un comando non valido. qualche idea?
Sarah

3
@Sarah: setè un comando di Windows e deve essere eseguito da cmd.exe. Non funzionerà su una macchina non Windows. La cosa sete echonon funziona neanche in Power Shell. Useresti qualcosa di simile $X=1; Write-Output $X.
jww

@jww grazie. Sono su una macchina Windows ma stavo usando quel comando in openssl.exe invece di cmd.exe .. Ho letto il tuo commento e sono andato su cmd.exe e ho invece digitato il comando set. Funzionava correttamente ma ricevevo ancora lo stesso errore in openssl.exe che diceva "Impossibile caricare le informazioni di configurazione da wrong_path / ssl / openssl.cnf", quindi ho provato la soluzione seguente dicendo di aggiungere il parametro -config con la directory openssl e che ha funzionato perfettamente. quindi sono felice. grazie per l'aiuto :)
Sarah

Dovrebbe essere contrassegnato come risposta. Francamente dovrebbe essere inutile anche. Perché questa distribuzione Windows OpenSSL non è semplicemente predefinita su PWD, ad esempio?
stonedauwg

40

Basta aggiungere alla riga di comando il parametro -config c:\your_openssl_path\openssl.cfg, passando your_openssl_pathal percorso di installazione reale.


fantastico, ho seguito questo post del blog ajden.towfeek.se/post/… e l'aggiunta di -config funziona anche per cygwin, ad es. $ openssl ca -in server.csr -config /etc/ssl/openssl.cnf Ma perché -config non viene elencata in man openssl? openssl.org/docs/apps/openssl.html
barlop

@nneonneo ha provato questa e la soluzione sopra ma mi dice che set e config sono comandi non validi. qualche idea?
Sarah

set funziona solo su Windows; config non è un comando indipendente (lo aggiungi alla riga di comando di OpenSSL).
nneonneo

29

Basta creare un file openssl.cnf in questo modo nel passaggio 4: http://www.flatmtn.com/article/setting-openssl-create-certificates

Modifica dopo che il collegamento ha smesso di funzionare Il contenuto del file openssl.cnf era il seguente:

#
# 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 non più trovato
Greg Domjan

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

prenditi cura dell'estensione giusta ( openssl.cfg non cnf)!

Ho installato OpenSSL da qui: http://slproweb.com/products/Win32OpenSSL.html


Il collegamento di installazione ha aiutato, ho scaricato 0.9.8 da qualche altra parte e non funzionava. Grazie.
EpicPandaForce

14

Se hai installato Apache con OpenSSL vai alla directory bin. Nel mio caso D: \ apache \ bin.

* Questi comandi funzionano anche se hai un'installazione autonoma di openssl.

Esegui questi comandi:

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

* Questo creerà un certificato autofirmato che puoi usare per scopi di sviluppo

Di nuovo se hai installato Apache nel httpd.conf, inserisci questi:

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

Il collega che ha posto la domanda ha dichiarato chiaramente che stava usando Win32OpenSSL. Da dove viene la roba di Apache? In che modo è rilevante per la domanda?
jww

3
Ovviamente lo è, installare OpenSSL fornito separatamente o con Apache è la stessa cosa. Ho aggiunto Apache bit perché nel 95% dei casi il motivo dell'installazione di OpenSSL su Windows è perché verrà utilizzato con Apache.
Artur Kędzior

Ciò è utile perché XAMPP include OpenSSL all'interno della cartella Apache.
Jimmy Adaro

Funziona come un fascino!
Divyesh Prajapati

12

Prova a eseguire openssl.exe come amministratore.


2
Non dovrebbe essere necessario eseguire questi comandi come amministratore per farli funzionare. È meglio risolvere il problema sottostante.
jww

Se è installato nella directory dei file di programma sull'unità di sistema, è necessario eseguire il comando con diritti elevati, altrimenti non hai i permessi di scrittura.
CodeManX

1
Questo ha funzionato per me. Non so perché stava tentando di accedere C:\Program Files\Common Files\SSL/openssl.cnfe poi quando è stato eseguito come amministratore improvvisamente non gli importava di non poterlo trovare (e non ha nemmeno creato il file) ma questo ha funzionato per me, quindi non mi interessa o.
Simon_Weaver

7

Ho appena avuto un errore simile usando openssl.exe dalla cartella bin di Apache per Windows. Avevo il flag -config specificato da aveva un errore di battitura nel percorso del file openssl.cnf. Penso che lo troverai

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

dovrebbe essere

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

Nota: il conf dovrebbe probabilmente essere CNF .


4

Se l'installazione di openssl è avvenuta con successo, cerca "OPENSSL" nell'unità c per individuare il file di configurazione e impostare il percorso.

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

Ha funzionato per me.


3

Questa soluzione alternativa ci ha aiutato così tanto nel mio lavoro (supporto tecnico), abbiamo creato un semplice file batch che potevamo eseguire da qualsiasi luogo (non avevamo i permessi per installarlo). Questa soluzione alternativa imposterà la variabile e quindi eseguirà OpenSSL per te. Apre anche la cartella bin per te (perché è qui che verranno salvati tutti i file che crei o modifichi). Inoltre, questo è solo per Windows.

Come impostare:

  1. Scarica i binari di OpenSSL qui . (Si noti che è confermato che funziona con la versione 0.9.8h.)
  2. Copia questo codice in un file denominato StartOpenSSL.bat. Salvalo in una posizione a tua scelta. Può essere eseguito da qualsiasi luogo.

    @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. Dopo aver scaricato i binari di OpenSSL, estraili nell'unità C in una cartella denominata OpenSSL. (Il percorso deve essere C: \ OpenSSL). Non spostare nessuno dei contenuti delle cartelle, basta estrarli nella cartella.
  4. Sei pronto per utilizzare OpenSSL. Questa è un'ottima soluzione alternativa per gli utenti Windows che non hanno i privilegi per installarlo poiché non richiede autorizzazioni. Basta eseguire il file bat da prima facendo doppio clic su di esso.

2

Il problema qui è che NON esiste un file openssl.cnf fornito con GnuWin32 openssl. Devi crearlo. Puoi scoprire COME creare un file openssl.cnf andando qui:

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

Dove ti spiega tutto su come farlo.

NOTA BENE: Il comando openssl fornito con la barra rovesciata alla fine è per UNIX. Per Windows: 1) rimuovere la barra rovesciata e 2) spostare la seconda riga verso l'alto in modo che si trovi alla fine della prima riga. (Quindi ottieni solo un comando.)

INOLTRE: È MOLTO importante leggere i commenti. Ci sono alcune modifiche che potresti voler apportare in base a esse.


2

Ho avuto lo stesso problema su Windows. È stato risolto impostando la variabile d'ambiente come segue:

Nome variabile: OPENSSL_CONF Valore variabile: C: (OpenSSl Directory) \ bin \ openssl.cnf


1

Se visualizzi un errore simile a

errore sulla riga -1 c: apacheconfopenssl.cnf

prova a cambiare da barra posteriore a barra anteriore in -config.



0

Esegui il comando come amministratore e copia il file di configurazione da qualche parte in cui hai i diritti di lettura e specifica il percorso con il parametro -config.


0

So che questo è vecchio, ma ho pensato che altri che accadono su questo (e usano Visual Studio) potrebbero trarne beneficio. L'ho letto in un altro post che non riesco a trovare.

Apri la tua configurazione in notepad ++ e assicurati che la codifica sia UTF-8 (cioè, non UTF-8-BOM *).

Questo mi avrebbe risparmiato un sacco di ricerche / trial'n'errors ...


0

So che questa domanda è vecchia ma ecco come l'ho risolta.

Ho copiato il openssl.cnffile dalla bindirectory alla directory principale che è C:/Openssl/openssl.cnfinvece di C:/Openssl/bin/openssl.cnfe ha funzionato bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.