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


184

Durante l'utilizzo di OpenSSL su Windows:

openssl genrsa -out privatekey.pem 1024 -->

Creato con successo

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

Mostra messaggio di errore come

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


4
Tutte le risposte mostrano che in qualche modo si deve fare riferimento al file di configurazione openssl.cnf .. MA nessuno menziona quale file di configurazione, ?? chi lo crea ?? qual è il suo contenuto?
Joedotnot

Risposte:


170

Dopo aver installato OpenSSL mi è stato richiesto di creare una nuova variabile d'ambiente:

  • Nome: OPENSSL_CONF
  • Valore: C:\Program Files\OpenSSL\openssl.cnf

In PowerShell:

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

Questo valore differisce dalle versioni precedenti dell'installazione (come visto in una precedente modifica di questo post). Inoltre, non dimenticare di aggiungere la cartella binaria openssl ${env:ProgramFiles}\OpenSSLal tuo percorso.


16
Sulla versione 1.0.1j ho dovuto usare C:\OpenSSL-Win32\bin\openssl.cfginvece.
Kevin Panko,

7
Oppure C: \ OpenSSL-Win64 \ bin \ openssl.cfg nei sistemi a 64
bit

13
O C:\Program Files (x86)\Git\ssl\openssl.cfgper quelli già con git.
kspearrin,

dove / come stai impostando questo valore?
matthew_360,

Questo lo metterebbe nell'ambiente di avvio dell'utente:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
Ross Presser,

78

Dovresti specificare il percorso assoluto della configurazione, qualcosa del genere:

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

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

4
Nella versione 1.0.1 scaricata da slproweb.com/products/Win32OpenSSL.html c'è solo il file openssl.cfgpresente nella directory bin dopo l'installazione. Ma con questo file sembra funzionare comunque.
vanje,

9
Se stai usando OpenSSL fornito con Git, potresti provare-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B,

2
openssl: errore: '-config' è un comando non valido. come lo impostate ragazzi?
Benez,

1
@kewlbfy vedi la risposta di @Kosar qui sotto per sapere dove usare la -configbandiera, questo ha funzionato per me
danjah

36

In Windows 10, non è necessario riavviare né eseguire in modalità Amministratore ma impostare invece openssl config in questo modo:

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

Certo, se stai usando GnuWin32


20

In windows, [ Scenario simile ]

Stavo affrontando lo stesso problema, ma era durante la richiesta della richiesta di firma del certificato.

Ho fatto il seguito, ha funzionato per me.

Una volta installato OpenSSL, ho eseguito il prompt dei comandi come amministratore dopo il riavvio del sistema. [Per la migliore cosa ho fatto entrambi .. corri come amministratore e riavvio del sistema]

fatto, 1. [Caso di errore]

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

ATTENZIONE: impossibile aprire il file di configurazione: C: \ OpenSSL-Win64 \ bin \ openssl.cnf AND Impossibile caricare le informazioni di configurazione da C: \ OpenSSL-Win64 \ bin \ openssl.cnf

2. [Funzionato con avviso]

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

[Messaggio di avviso]: ATTENZIONE: impossibile aprire il file di configurazione: C: \ OpenSSL-Win64 \ bin \ openssl.cnf

Ma mi ha richiesto Pass Phrase per server.key Ha funzionato per me.

Ho indicato questo link per la mia assistenza.

Grazie.


Grazie, il link che mi hai fornito mi ha aiutato moltissimo: akadia.com/services/ssh_test_certificate.html
leole

15

L' unica cosa che ha funzionato per me in questa situazione è stato il file openssl.cnf auto-creato .

Ecco le basi necessarie per questo esercizio (modifica secondo necessità):

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

Spero che aiuti.


1
Avendo provato ogni altra soluzione elencata qui, questa ha funzionato per me. Una volta creata la configurazione (nella directory openssl.exe) è quindi possibile eseguireopenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
Jimbo

12

Dopo aver installato OpenSSL, è necessario riavviare il computer e utilizzare Run As Administrator. Quindi funziona.


11

Con gli strumenti GnuWin32 ho trovato openssl.cnf in C: \ gnuwin32 \ share

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

9

Per me su Windows 8, ho semplicemente trovato il file openssl.cnf e l'ho copiato sull'unità C. poi:

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

Ha funzionato perfettamente.


6

In Windows 7 non ho dovuto riavviare, è sufficiente eseguire il prompt dei comandi in modalità amministratore.


4

Nel mio caso, devo impostare manualmente il percorso del file openssl.cnf sul comando utilizzando l' configopzione. Quindi il comando

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

Se si utilizza Win32 OpenSSL v1.1.0g , impostare questa variabile di ambiente:

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

Prima di eseguire questo comando con "server.key" , creando correttamente "server.csr" :

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

1

Sulla domanda di base del perché non si trova openssl: Risposta breve: Alcuni pacchetti di installazione per openssl hanno un predefinito openssl.cnf pre-incluso. Altri pacchetti no. In quest'ultimo caso ne includerai uno dal link mostrato sotto; È possibile inserire ulteriori specifiche dell'utente - nome DNS, ecc. - secondo necessità.

Da https://www.openssl.org/docs/manmaster/man5/config.html, cito direttamente:

"CONFIGURAZIONE DELLA BIBLIOTECA OPENSSL

Le applicazioni possono configurare automaticamente determinati aspetti di OpenSSL utilizzando il file di configurazione OpenSSL principale o, facoltativamente, un file di configurazione alternativo. L'utilità openssl include questa funzionalità: qualsiasi comando secondario utilizza il file di configurazione OpenSSL principale a meno che nel comando secondario non venga utilizzata un'opzione per utilizzare un file di configurazione alternativo.

Per abilitare la configurazione della libreria, la sezione predefinita deve contenere una riga appropriata che punta alla sezione di configurazione principale. Il nome predefinito è openssl_conf utilizzato dall'utilità openssl. Altre applicazioni possono usare un nome alternativo come myapplication_conf. Tutte le righe di configurazione della libreria vengono visualizzate nella sezione predefinita all'inizio del file di configurazione.

La sezione di configurazione deve essere costituita da un insieme di coppie valore-valore che contengono informazioni specifiche sulla configurazione del modulo. Il nome rappresenta il nome del modulo di configurazione. Il significato del valore è specifico del modulo: può, ad esempio, rappresentare un'ulteriore sezione di configurazione contenente informazioni specifiche sul modulo di configurazione. Per esempio:"

Quindi sembra che si debba configurare autonomamente openssl.cnf in base al proprio nome distinto (DN), insieme ad altre voci specifiche per l'uso.

Ecco il file modello da cui è possibile generare openssl.cnf con le voci specifiche.

Un'applicazione in realtà ha un'installazione demo che include un file demo .cnf.

Inoltre, se è necessario accedere a livello di codice ai file .cnf, è possibile includere intestazioni appropriate --openssl / conf.h-- e analizzare i file .cnf utilizzando

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

Ecco i documenti per "CONF_modules_load_file";


0

Per me mettere variabile prima di chiamare ha fatto il trucco:

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

0

Su Windows Powershell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
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.