Konfigurationsinformationen können unter Windows unter /usr/local/ssl/openssl.cnf nicht geladen werden


183

Bei Verwendung von OpenSSL unter Windows:

openssl genrsa -out privatekey.pem 1024 -->

Erfolgreich erstellt

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

Fehlermeldung als anzeigen

Konfigurationsinformationen können nicht aus /usr/local/ssl/openssl.cnf geladen werden


3
Alle Antworten zeigen, dass man irgendwie auf die Konfigurationsdatei openssl.cnf verweisen muss. ABER niemand erwähnt welche Konfigurationsdatei, ?? Wer schafft es? Was ist ihr Inhalt?
Joedotnot

Antworten:


170

Nach der Installation von OpenSSL musste ich eine neue Umgebungsvariable erstellen:

  • Name: OPENSSL_CONF
  • Wert: C:\Program Files\OpenSSL\openssl.cnf

In Powershell:

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

Dieser Wert unterscheidet sich von früheren Installationsversionen (wie in einer früheren Bearbeitung dieses Beitrags gezeigt). Vergessen Sie auch nicht, den Binärordner openssl ${env:ProgramFiles}\OpenSSLzu Ihrem Pfad hinzuzufügen .


16
Auf Version 1.0.1j musste ich C:\OpenSSL-Win32\bin\openssl.cfgstattdessen verwenden.
Kevin Panko

7
Oder C: \ OpenSSL-Win64 \ bin \ openssl.cfg in 64-Bit-Systemen
Borjab

13
Oder C:\Program Files (x86)\Git\ssl\openssl.cfgfür diejenigen, die schon mit Git sind.
Kspearrin

wo / wie stellst du diesen Wert ein?
Matthew_360

Dies würde es in die Startumgebung Ihres Benutzers setzen:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
Ross Presser

78

Sie sollten den absoluten Pfad zur Konfiguration wie folgt angeben:

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

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

4
In Version heruntergeladen 1.0.1e von slproweb.com/products/Win32OpenSSL.html nur die Datei openssl.cfgin dem Verzeichnis ist nach der Installation. Aber mit dieser Datei scheint es trotzdem zu funktionieren.
Vanje

9
Wenn Sie die mit Git gelieferte OpenSSL verwenden, können Sie versuchen-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B

2
openssl: Fehler: '-config' ist ein ungültiger Befehl. Wie stellt ihr es ein?
Benez

1
@kewlbfy siehe @ Kosar Antwort unten, wo die -configFlagge verwendet werden soll, das hat bei mir
funktioniert

35

In Windows 10 müssen Sie weder neu starten noch im Administratormodus ausführen, sondern müssen die openssl-Konfiguration wie folgt festlegen:

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

Natürlich, wenn Sie verwenden GnuWin32


20

In Windows [ Ähnliches Szenario ]

Ich hatte das gleiche Problem, aber es war während der Anforderung einer Zertifikatsignierungsanforderung.

Ich habe das Folgende getan, es hat bei mir funktioniert.

Nach der Installation von OpenSSL wird die Eingabeaufforderung als Administrator nach dem Neustart des Systems ausgeführt.

tat, 1. [Fehlerfall]

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

WARNUNG: Konfigurationsdatei kann nicht geöffnet werden: C: \ OpenSSL-Win64 \ bin \ openssl.cnf UND Konfigurationsinformationen können nicht aus C: \ OpenSSL-Win64 \ bin \ openssl.cnf geladen werden

2. [Arbeitete mit Warnung]

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

[Warnmeldung]: WARNUNG: Konfigurationsdatei kann nicht geöffnet werden: C: \ OpenSSL-Win64 \ bin \ openssl.cnf

Aber mich dazu veranlasst für die Passphrase für server.key Es funktionierte für mich.

Ich verwies auf diesen Link für meine Hilfe.

Danke dir.


Vielen Dank, der Link, den Sie bereitgestellt haben, hat mir sehr geholfen: akadia.com/services/ssh_test_certificate.html
Leole

15

Das einzige, was in dieser Situation für mich funktioniert hat, war die selbst erstellte Datei openssl.cnf .

Hier sind die Grundlagen für diese Übung (nach Bedarf bearbeiten):

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

Ich hoffe das hilft.


1
Nachdem ich jede andere hier aufgeführte Lösung ausprobiert hatte, funktionierte diese für mich. Sobald die Konfiguration erstellt ist (im Verzeichnis openssl.exe), können Sie ausführenopenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
Jimbo

12

Nach der Installation von OpenSSL müssen Sie Ihren Computer neu starten und verwenden Run As Administrator. Dann funktioniert es.


11

Mit den GnuWin32-Tools fand ich die openssl.cnf unter C: \ gnuwin32 \ share

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

9

Unter Windows 8 habe ich einfach die Datei openssl.cnf gefunden und auf das Laufwerk C kopiert. dann:

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

Hat perfekt funktioniert.


6

In Windows 7 musste ich nicht neu starten, sondern einfach die Eingabeaufforderung im Administratormodus ausführen.


4

In meinem Fall muss ich den Pfad der Datei openssl.cnf manuell für den Befehl mit der configOption festlegen . Also der Befehl

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

Wenn Sie Win32 OpenSSL v1.1.0g verwenden , richten Sie diese Umgebungsvariable ein:

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

Bevor Sie diesen Befehl mit "server.key" ausführen , erstellen Sie erfolgreich "server.csr" :

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

1

Zur grundlegenden Frage, warum openssl nicht gefunden wird: Kurze Antwort: In einigen Installationspaketen für openssl ist standardmäßig die Datei openssl.cnf enthalten. Andere Pakete nicht. Im letzteren Fall fügen Sie einen über den unten gezeigten Link ein. Sie können bei Bedarf zusätzliche benutzerspezifische Details eingeben - DNS-Name usw.

Von https://www.openssl.org/docs/manmaster/man5/config.html zitiere ich direkt:

"OPENSSL LIBRARY CONFIGURATION

Anwendungen können bestimmte Aspekte von OpenSSL automatisch mithilfe der OpenSSL-Hauptkonfigurationsdatei oder optional einer alternativen Konfigurationsdatei konfigurieren. Das Dienstprogramm openssl enthält diese Funktionalität: Jeder Unterbefehl verwendet die OpenSSL-Hauptkonfigurationsdatei, es sei denn, im Unterbefehl wird eine Option zur Verwendung einer alternativen Konfigurationsdatei verwendet.

Um die Bibliothekskonfiguration zu aktivieren, muss der Standardabschnitt eine entsprechende Zeile enthalten, die auf den Hauptkonfigurationsabschnitt verweist. Der Standardname lautet openssl_conf, der vom Dienstprogramm openssl verwendet wird. Andere Anwendungen verwenden möglicherweise einen alternativen Namen wie myapplication_conf. Alle Bibliothekskonfigurationszeilen werden im Standardabschnitt am Anfang der Konfigurationsdatei angezeigt.

Der Konfigurationsabschnitt sollte aus einer Reihe von Name-Wert-Paaren bestehen, die spezifische Informationen zur Modulkonfiguration enthalten. Der Name steht für den Namen des Konfigurationsmoduls. Die Bedeutung des Werts ist modulspezifisch: Er kann beispielsweise einen weiteren Konfigurationsabschnitt darstellen, der spezifische Informationen zum Konfigurationsmodul enthält. Z.B:"

Es scheint also, dass man openssl.cnf zusammen mit Ihrem Distinguished Name (DN) zusammen mit anderen für Ihre Verwendung spezifischen Einträgen selbst konfigurieren muss.

Hier ist die Vorlagendatei, aus der Sie openssl.cnf mit Ihren spezifischen Einträgen generieren können.

Eine Anwendung verfügt tatsächlich über eine Demo-Installation, die eine Demo-CNF-Datei enthält.

Wenn Sie programmgesteuert auf .cnf-Dateien zugreifen müssen, können Sie außerdem die entsprechenden Header --openssl / conf.h-- einfügen und Ihre .cnf-Dateien mit analysieren

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

Hier sind Dokumente für "CONF_modules_load_file";


0

Für mich hat die Variable vor dem Aufruf den Trick gemacht:

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

0

Unter Windows Powershell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.