Nie można załadować informacji o konfiguracji z /usr/local/ssl/openssl.cnf w systemie Windows

184

Podczas korzystania z OpenSSL w systemie Windows:

openssl genrsa -out privatekey.pem 1024 -->

Utworzono pomyślnie

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

Pokazuje komunikat o błędzie jako

nie można załadować informacji o konfiguracji z /usr/local/ssl/openssl.cnf

karthik
źródło
4
Wszystkie odpowiedzi pokazują, że w jakiś sposób należy odwoływać się do pliku konfiguracyjnego openssl.cnf .. ALE nikt nie wspomina, jaki plik konfiguracyjny? kto to tworzy? jaka jest jego zawartość?
joedotnot

Odpowiedzi:

170

Po zainstalowaniu OpenSSL musiałem utworzyć nową zmienną środowiskową:

  • Imię: OPENSSL_CONF
  • Wartość: C:\Program Files\OpenSSL\openssl.cnf

W PowerShell:

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

Ta wartość różni się od poprzednich wersji instalacyjnych (jak widać w poprzedniej edycji tego postu). Nie zapomnij również dodać folderu binarnego openssl ${env:ProgramFiles}\OpenSSLdo ścieżki.

lame_coder
źródło
16
W wersji 1.0.1j musiałem C:\OpenSSL-Win32\bin\openssl.cfgzamiast tego użyć .
Kevin Panko
7
Lub C: \ OpenSSL-Win64 \ bin \ openssl.cfg w systemach 64-bitowych
borjab
13
Lub C:\Program Files (x86)\Git\ssl\openssl.cfgdla tych, którzy już mają git.
kspearrin
gdzie / jak ustawiasz tę wartość?
matthew_360
Spowoduje to umieszczenie go w środowisku startowym użytkownika:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
Ross Presser
78

Powinieneś określić bezwzględną ścieżkę do konfiguracji, coś takiego:

openssl req -x509 -config "C:\OpenSSL-Win64\bin\openssl.cnf" ...
zombi_man
źródło
36
-config C: \ OpenSSL-Win64 \ bin \ openssl.cnf
TimK
4
W wersji 1.0.1e pobranej ze strony slproweb.com/products/Win32OpenSSL.html tylko plik openssl.cfgznajduje się w katalogu bin po instalacji. Ale z tym plikiem i tak wydaje się działać.
vanje
9
Jeśli korzystasz z OpenSSL dostarczonego z Git, możesz spróbować-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B
2
openssl: Błąd: „-config” jest niepoprawnym poleceniem. jak to ustawicie?
benez
1
@kewlbfy patrz @Kosar odpowiedź poniżej, gdzie użyć -configflagi, to zadziałało dla mnie
Danjah
36

W systemie Windows 10 nie trzeba restartować ani uruchamiać w trybie administratora, ale zamiast tego ustaw konfigurację openssl w następujący sposób:

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

Oczywiście, jeśli używasz GnuWin32

Czarna Perła
źródło
20

W systemie Windows [ podobny scenariusz ]

Miałem do czynienia z tym samym problemem, ale miało to miejsce podczas żądania żądania podpisania certyfikatu.

Zrobiłem poniżej, To zadziałało dla mnie.

Po zainstalowaniu OpenSSL, wiersz polecenia Ran jako administrator po ponownym uruchomieniu systemu. [Najlepiej zrobić zarówno .. uruchomić jako administrator i ponowne uruchomienie systemu]

zrobił, 1. [Przypadek błędu]

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

OSTRZEŻENIE: nie można otworzyć pliku konfiguracji: C: \ OpenSSL-Win64 \ bin \ openssl.cnf ORAZ Nie można załadować informacji o konfiguracji z C: \ OpenSSL-Win64 \ bin \ openssl.cnf

2. [Pracował z ostrzeżeniem]

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

[Komunikat ostrzegawczy]: OSTRZEŻENIE: nie można otworzyć pliku konfiguracyjnego: C: \ OpenSSL-Win64 \ bin \ openssl.cnf

Ale poprosił mnie o frazę hasła dla server.key To zadziałało dla mnie.

Odniosłem się, ten link do mojej pomocy.

Dziękuję Ci.

Mavis
źródło
Dzięki, link, który podałeś bardzo mi pomógł: akadia.com/services/ssh_test_certificate.html
leole
15

Tylko rzeczą, że pracował dla mnie w tej sytuacji był self-stworzony openssl.cnf plik .

Oto podstawy potrzebne do tego ćwiczenia (edytuj w razie potrzeby):

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

Mam nadzieję że to pomogło.

simhumileco
źródło
1
Po wypróbowaniu wszystkich innych wymienionych tutaj rozwiązań, to zadziałało dla mnie. Po utworzeniu konfiguracji (w katalogu openssl.exe) możesz uruchomićopenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
Jimbo,
12

Po zainstalowaniu OpenSSL musisz ponownie uruchomić komputer i korzystać z niego Run As Administrator. Potem działa.

karthik
źródło
11

Za pomocą narzędzi GnuWin32 znalazłem openssl.cnf pod C: \ gnuwin32 \ share

set OPENSSL_CONF=C:\gnuwin32\share\openssl.cnf
TL
źródło
9

W przypadku systemu Windows 8 po prostu znalazłem plik openssl.cnf i skopiowałem go na dysk C. następnie:

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

Działał idealnie.

Ali
źródło
6

W Windows 7 nie musiałem restartować, po prostu uruchom wiersz polecenia w trybie administratora.

Calgary Libertarian
źródło
4

W moim przypadku muszę ręcznie ustawić ścieżkę pliku openssl.cnf w poleceniu za pomocą configopcji. Więc polecenie

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
Sunil Garg
źródło
3

Jeśli używasz Win32 OpenSSL v1.1.0g , skonfiguruj tę zmienną środowiskową:

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

Przed uruchomieniem tego polecenia za pomocą „server.key” , pomyślne utworzenie „server.csr” :

openssl req -new -key server.key -out server.csr
5ervant
źródło
1

Na podstawowe pytanie, dlaczego openssl nie został znaleziony: Krótka odpowiedź: Niektóre pakiety instalacyjne dla openssl mają domyślnie dołączony plik openssl.cnf. Inne pakiety nie. W tym drugim przypadku umieścisz jeden z linku pokazanego poniżej; W razie potrzeby możesz wprowadzić dodatkowe informacje specyficzne dla użytkownika - nazwę DNS itp.

Od https://www.openssl.org/docs/manmaster/man5/config.html, cytuję bezpośrednio:

„KONFIGURACJA BIBLIOTEKI OPENSSL

Aplikacje mogą automatycznie konfigurować niektóre aspekty OpenSSL przy użyciu głównego pliku konfiguracyjnego OpenSSL lub opcjonalnie alternatywnego pliku konfiguracyjnego. Narzędzie openssl zawiera tę funkcję: dowolne polecenie podrzędne używa głównego pliku konfiguracyjnego OpenSSL, chyba że w poleceniu podrzędnym jest używana opcja użycia alternatywnego pliku konfiguracyjnego.

Aby włączyć konfigurację biblioteki, sekcja domyślna musi zawierać odpowiednią linię wskazującą główną sekcję konfiguracji. Domyślna nazwa to openssl_conf, której używa narzędzie openssl. Inne aplikacje mogą używać alternatywnych nazw, takich jak myapplication_conf. Wszystkie wiersze konfiguracji biblioteki pojawiają się w sekcji domyślnej na początku pliku konfiguracyjnego.

Sekcja konfiguracji powinna składać się z zestawu par nazw wartości, które zawierają określone informacje o konfiguracji modułu. Nazwa reprezentuje nazwę modułu konfiguracji. Znaczenie tej wartości jest specyficzne dla modułu: może na przykład reprezentować kolejną sekcję konfiguracji zawierającą informacje specyficzne dla modułu konfiguracji. Na przykład:"

Wygląda więc na to, że należy samodzielnie skonfigurować openssl.cnf zgodnie z nazwą wyróżniającą (DN) oraz innymi wpisami specyficznymi dla twojego zastosowania.

Oto plik szablonu, z którego można wygenerować openssl.cnf z określonymi wpisami.

Jedna aplikacja faktycznie ma instalację demonstracyjną, która zawiera plik demonstracyjny .cnf.

Ponadto, jeśli chcesz programowo uzyskać dostęp do plików .cnf, możesz dołączyć odpowiednie nagłówki --openssl / conf.h-- i przeanalizować pliki .cnf za pomocą

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

Oto dokumentacja dla „CONF_modules_load_file”;

loveofthecode
źródło
0

Dla mnie wstaw zmienną przed wywołaniem zrobiłem lewę:

OPENSSL_CONF=/usr/ssl/openssl.cnf openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365
VoloshinS
źródło
0

W Windows Powershell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
Kowal
źródło