OpenSSL und Fehler beim Lesen der Datei openssl.conf

119

Ich verwende Windows XP 32bit

Ich habe gerade Openssl von der folgenden URL heruntergeladen und installiert. http://www.slproweb.com/products/Win32OpenSSL.html

und dann habe ich versucht, ein selbstsigniertes Zertifikat mit dem folgenden Befehl zu erstellen

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

dann begann es den folgenden Fehler zu geben

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

Dann, nachdem ich irgendwann gegoogelt hatte, änderte ich den obigen Befehl in

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

Aber jetzt bekomme ich den folgenden Fehler in der Eingabeaufforderung

Fehler in Zeile -1 von C: \ OpenSSL \ bin \ openssl.conf
4220: Fehler: 02001002: Systembibliothek: fopen: Keine solche Datei oder kein solches Verzeichnis :. \ crypto \ bio \ bss_file.c: 126: fopen ('C: \ OpenSSL \ bin \ openssl.conf ',' rb ') 4220: Fehler: 2006D080: BIO-Routinen: BIO_neue_Datei: Keine solche Datei :. \ Crypto \ bio \ bss_file.c: 129:
4220: Fehler: 0E078072: Routinen für Konfigurationsdateien : DEF_LOAD: Keine solche Datei :. \ Crypto \ conf \ conf_def.c: 197:

Bitte helfen Sie. Danke im Voraus.

Sreeram
quelle
3
Überprüfen Sie den genauen Dateinamen: openssl.conf ---> openssl.cnf
Mark
2
Die Dateierweiterung unter Windows lautet jetzt .cfg. Stellen Sie außerdem sicher, dass der angegebene Dateipfad (in der Befehlszeile oder in der Umgebungsvariablen OPENSSL_CONF) nicht in Anführungszeichen steht.
Tatx
Die Dateierweiterung (.cnf / .cfg) scheint zu variieren, je nachdem, was zur Installation von OpenSSL verwendet wurde. Bei einer Installation von WampServer v3.2.2 habe ich gerade den Konfigurationsdateinamen openssl.cnf verwendet. Ich habe auch eine 64-Bit-Installation von Window10 mit den Binärdateien von Shining Path Productions durchgeführt. Der Dateiname in dieser Installation war openssl.cfg. Dieser Unterschied bei den Erweiterungsnamen der OpenSSL-Konfigurationsdatei scheint kompilierungsabhängig zu sein. Ich habe noch nicht getestet, welcher Erweiterungsname von OpenSSL v1.1.1g erkannt wird.
Bill Vallance

Antworten:

140

Unter Windows können Sie auch die Umgebungseigenschaft festlegen OPENSSL_CONF. Über die Befehlszeile können Sie beispielsweise Folgendes eingeben:

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

Um es zu validieren, können Sie Folgendes eingeben:

echo %OPENSSL_CONF%

Sie können es auch als Teil der Umgebungsvariablen des Computers festlegen, damit es allen Benutzern und Diensten standardmäßig zur Verfügung steht. Siehe beispielsweise Umgebungsvariablen in Windows NT und Verwalten von Umgebungsvariablen in Windows XP .

Jetzt können Sie openssl-Befehle ausführen, ohne den Parameter config location übergeben zu müssen.

dvtoever
quelle
9
Danke, hat für mich gearbeitet! (setze OPENSSL_CONF = c: \ openssl-win32 \ bin \ openssl.cfg)
Valentin Heinitz
@jww hat dies versucht, aber es sagt mir, dass set ein ungültiger Befehl ist. irgendwelche Ideen?
Sarah
3
@Sarah - setist ein Windows-Befehl, der ausgeführt werden soll cmd.exe. Auf einem Nicht-Windows-Computer funktioniert dies nicht. Das setund echo-Ding funktioniert auch in Power Shell nicht. Sie würden so etwas wie verwenden $X=1; Write-Output $X.
Jww
@jww danke. Ich bin auf einem Windows-Computer, aber ich habe diesen Befehl in der Datei openssl.exe anstelle von cmd.exe verwendet. Ich habe Ihren Kommentar gelesen und bin zu cmd.exe gegangen und habe dort stattdessen den Befehl set eingegeben. Es hat korrekt funktioniert, aber in der Datei openssl.exe wurde immer noch der gleiche Fehler angezeigt: "Konfigurationsinformationen können nicht aus false_path / ssl / openssl.cnf geladen werden." Daher habe ich die folgende Lösung ausprobiert und den Parameter -config mit Ihrem openssl-Verzeichnis und hinzugefügt das hat perfekt funktioniert. also bin ich glücklich Danke für die Hilfe :)
Sarah
Sollte als Antwort markiert werden. Ehrlich gesagt sollte auch unnötig sein. Warum verwendet diese OpenSSL Windows-Distribution beispielsweise nicht einfach standardmäßig PWD?
Stonedauwg
40

Fügen Sie einfach den Parameter zu Ihrer Befehlszeile hinzu -config c:\your_openssl_path\openssl.cfgund wechseln Sie your_openssl_pathzum tatsächlich installierten Pfad.

Nikl
quelle
großartig, folge diesem Blog-Beitrag ajden.towfeek.se/post/… und füge -config hinzu, funktioniert auch für cygwin zB $ openssl ca -in server.csr -config /etc/ssl/openssl.cnf Aber warum wird diese -config nicht in man openssl aufgelistet? openssl.org/docs/apps/openssl.html
Barlop
@nneonneo hat dies und die obige Lösung ausprobiert, aber es sagt mir, dass set und config ungültige Befehle sind. irgendwelche Ideen?
Sarah
set funktioniert nur unter Windows; config ist kein unabhängiger Befehl (Sie hängen ihn an Ihre OpenSSL-Befehlszeile an).
Nneonneo
29

Erstellen Sie einfach selbst eine openssl.cnf-Datei wie folgt in Schritt 4: http://www.flatmtn.com/article/setting-openssl-create-certificates

Bearbeiten, nachdem der Link nicht mehr funktioniert Der Inhalt der Datei openssl.cnf war wie folgt:

#
# 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
Sam
quelle
1
URL nicht mehr gefunden
Greg Domjan
15
set OPENSSL_CONF=c:/{path to openSSL}/bin/openssl.cfg

Achten Sie auf die richtige Erweiterung ( openssl.cfg nicht cnf)!

Ich habe OpenSSL von hier aus installiert: http://slproweb.com/products/Win32OpenSSL.html


quelle
Der Installationslink hat geholfen, ich habe 0.9.8 von einem anderen Ort heruntergeladen und es hat nicht funktioniert. Danke dir.
EpicPandaForce
14

Wenn Sie Apache mit OpenSSL installiert haben, navigieren Sie zum Verzeichnis bin. In meinem Fall D: \ apache \ bin.

* * Diese Befehle funktionieren auch, wenn Sie openssl eigenständig installiert haben.

Führen Sie die folgenden Befehle aus:

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

* * Dadurch wird ein selbstsigniertes Zertifikat erstellt, das Sie für Entwicklungszwecke verwenden können

Wenn Sie Apache in der httpd.conf installiert haben, halten Sie Folgendes fest:

  <IfModule ssl_module>
    SSLEngine on
    SSLCertificateFile "D:/apache/conf/server.crt"
    SSLCertificateKeyFile "D:/apache/conf/server.key"
  </IfModule>
Artur Kędzior
quelle
Der Mitarbeiter, der die Frage stellte, gab eindeutig an, dass er Win32OpenSSL verwendet. Woher kommt das Apache-Zeug? Wie ist es für die Frage relevant?
JWW
3
Natürlich ist die Installation von OpenSSL, die separat oder mit Apache geliefert wird, dasselbe. Ich habe Apache-Bit hinzugefügt, da in 95% der Fälle der Grund für die Installation von OpenSSL unter Windows darin besteht, dass Apache verwendet wird.
Artur Kędzior
Dies ist nützlich, da XAMPP OpenSSL im Apache-Ordner enthält.
Jimmy Adaro
Arbeiten wie ein Zauber!
Divyesh Prajapati
12

Versuchen Sie einfach, openssl.exe als Administrator auszuführen.

Serghei Grajdean
quelle
2
Sie sollten diese Befehle nicht als Administrator ausführen müssen, damit sie funktionieren. Es ist besser, das zugrunde liegende Problem zu beheben.
JWW
Wenn es im Programmdateiverzeichnis auf dem Systemlaufwerk installiert ist und der Befehl mit erhöhten Rechten ausgeführt werden muss, haben Sie sonst keine Schreibberechtigungen.
CodeManX
1
Das hat bei mir funktioniert. Ich weiß nicht, warum es versucht hat, darauf zuzugreifen, C:\Program Files\Common Files\SSL/openssl.cnfund als es dann als Administrator ausgeführt wurde, war es ihm plötzlich egal, dass es es nicht finden konnte (und die Datei auch nicht erstellt hat), aber das hat bei mir funktioniert, also ist es mir egal entweder.
Simon_Weaver
7

Ich hatte gerade einen ähnlichen Fehler bei der Verwendung der Datei openssl.exe aus dem Ordner Apache for Windows bin. Ich hatte das Flag -config angegeben durch einen Tippfehler im Pfad der Datei openssl.cnf. Ich denke, das wirst du finden

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

sollte sein

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

Hinweis: Die conf sollte wahrscheinlich cnf sein .

Nic Cottrell
quelle
4

Wenn die openssl-Installation erfolgreich war, suchen Sie im Laufwerk c nach "OPENSSL", um die Konfigurationsdatei zu suchen und den Pfad festzulegen.

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

Es hat für mich geklappt.

hermes101
quelle
3

Diese Problemumgehung hat uns bei meiner Arbeit (technischer Support) so sehr geholfen, dass wir eine einfache Batch-Datei erstellt haben, die wir von überall aus ausführen konnten (wir hatten nicht die Berechtigung, sie zu installieren). Diese Problemumgehung legt die Variable fest und führt dann OpenSSL für Sie aus. Außerdem wird der Ordner bin für Sie geöffnet (hier werden alle von Ihnen erstellten oder geänderten Dateien gespeichert). Dies gilt auch nur für Windows.

Wie stellt man das ein:

  1. Laden Sie die OpenSSL - Binärdateien hier . (Beachten Sie, dass dies für Version 0.9.8h bestätigt wurde.)
  2. Kopieren Sie diesen Code in eine Datei mit dem Namen StartOpenSSL.bat. Speichern Sie dies an einem Ort Ihrer Wahl. Es kann von überall ausgeführt werden.

    @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. Nachdem Sie die OpenSSL-Binärdateien heruntergeladen haben, extrahieren Sie sie in einem Ordner mit dem Titel OpenSSL auf Ihr C-Laufwerk. (Der Pfad muss C: \ OpenSSL sein). Verschieben Sie keinen Ordnerinhalt, sondern extrahieren Sie ihn einfach in den Ordner.
  4. Sie können OpenSSL verwenden. Dies ist eine großartige Problemumgehung für Windows-Benutzer, die nicht über die Berechtigungen zum Installieren verfügen, da keine Berechtigungen erforderlich sind. Führen Sie einfach die Bat-Datei von früher aus, indem Sie darauf doppelklicken.
Rex Linder
quelle
2

Das Problem hierbei ist, dass es KEINE openssl.cnf-Datei gibt, die mit dem gnuWin32 openssl-Zeug angegeben ist. Du musst es schaffen. Hier erfahren Sie, wie Sie eine openssl.cnf-Datei erstellen:

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

Wo es alles für Sie darlegt, wie es geht.

BITTE BEACHTEN SIE: Der Befehl openssl mit dem Backslash am Ende gilt für UNIX. Für Windows: 1) Entfernen Sie den Backslash und 2) Verschieben Sie die zweite Zeile nach oben, so dass sie am Ende der ersten Zeile steht. (Sie erhalten also nur einen Befehl.)

AUCH: Es ist SEHR wichtig, die Kommentare durchzulesen. Es gibt einige Änderungen, die Sie basierend darauf vornehmen möchten.

Mark Manning
quelle
2

Ich hatte das gleiche Problem unter Windows. Es wurde behoben, indem die Umgebungsvariable wie folgt festgelegt wurde:

Variablenname: OPENSSL_CONF Variablenwert: C: (OpenSSl-Verzeichnis) \ bin \ openssl.cnf

Braullio Soares
quelle
1

Wenn Sie so etwas wie einen Fehler sehen

Fehler in Zeile -1 c: apacheconfopenssl.cnf

Versuchen Sie, in der -config vom hinteren zum vorderen Schrägstrich zu wechseln.

Jauyzed
quelle
1

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

  1. Stellen Sie zunächst sicher, dass Sie eine haben openssl.cnf Datei im richtigen Pfad befindet.
  2. Wenn Sie es nicht finden können, laden Sie es einfach herunter und kopieren Sie es in Ihren Einstellungspfad.
$ echo %OPENSSL_CONF%

$ set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cnf
xgqfrms
quelle
OpenSSL & node.js
xgqfrms
konnte C: \ OpenSSL \
Snehal Dwivedi
@ SnehalDwivedi bitte folgen Sie den Schritten wie ich beschrieben habe.
xgqfrms
0

Führen Sie den Befehl als Administrator aus, kopieren Sie die Konfigurationsdatei an eine Stelle, an der Sie Leserechte haben, und geben Sie den Pfad mit dem Parameter -config an.

Dexion
quelle
0

Ich weiß, dass dies alt ist - aber ich dachte, andere, die dies tun (und Visual Studio verwenden), könnten davon profitieren. Ich habe dies in einem anderen Beitrag gelesen, den ich scheinbar nicht finde.

Öffnen Sie Ihre Konfiguration in Notepad ++ und stellen Sie sicher, dass die Codierung UTF-8 ist (dh nicht UTF-8-BOM *).

Das hätte mir viel Suchen / Ausprobieren erspart ...

jimnkey
quelle
0

Ich weiß, dass diese Frage alt ist, aber hier ist, wie ich sie gelöst habe.

Ich habe die openssl.cnfDatei aus dem binVerzeichnis in das übergeordnete Verzeichnis kopiert, was C:/Openssl/openssl.cnfstattdessen C:/Openssl/bin/openssl.cnffunktioniert hat.

ahmed nader
quelle