Tidak dapat memuat info konfigurasi dari /usr/local/ssl/openssl.cnf di Windows

184

Saat menggunakan OpenSSL pada Windows:

openssl genrsa -out privatekey.pem 1024 -->

Diciptakan dengan sukses

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

Menampilkan pesan kesalahan sebagai

tidak dapat memuat info konfigurasi dari /usr/local/ssl/openssl.cnf

karthik
sumber
4
Semua jawaban menunjukkan bahwa bagaimanapun seseorang harus mereferensikan file config openssl.cnf .. TAPI tidak ada yang menyebutkan file konfigurasi apa, ?? siapa yang menciptakannya, ?? apa isinya?
joedotnot

Jawaban:

170

Setelah menginstal OpenSSL saya diminta untuk membuat variabel lingkungan baru:

  • Nama: OPENSSL_CONF
  • Nilai: C:\Program Files\OpenSSL\openssl.cnf

Dalam PowerShell:

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

Nilai ini berbeda dari versi instalasi sebelumnya (seperti yang terlihat dalam edit sebelumnya pada posting ini). Juga, jangan lupa untuk menambahkan folder biner openssl ${env:ProgramFiles}\OpenSSLke Path Anda.

lame_coder
sumber
16
Pada versi 1.0.1j saya harus menggunakan C:\OpenSSL-Win32\bin\openssl.cfggantinya.
Kevin Panko
7
Atau C: \ OpenSSL-Win64 \ bin \ openssl.cfg dalam sistem
64bits
13
Atau C:\Program Files (x86)\Git\ssl\openssl.cfguntuk mereka yang sudah menggunakan git.
kspearrin
di mana / bagaimana Anda menetapkan nilai ini?
matthew_360
Ini akan menempatkannya di lingkungan startup pengguna Anda:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
Ross Presser
78

Anda harus menentukan jalur absolut ke konfigurasi, kira-kira seperti ini:

openssl req -x509 -config "C:\OpenSSL-Win64\bin\openssl.cnf" ...
zombi_man
sumber
36
-config C: \ OpenSSL-Win64 \ bin \ openssl.cnf
TimK
4
Dalam Versi 1.0.1e yang diunduh dari slproweb.com/products/Win32OpenSSL.html hanya openssl.cfgada file yang ada di direktori bin setelah instalasi. Tetapi dengan file ini sepertinya tetap bekerja.
vanje
9
Jika Anda menggunakan OpenSSL yang disediakan dengan Git maka Anda dapat mencoba-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B
2
openssl: Kesalahan: '-config' adalah perintah yang tidak valid. bagaimana kalian mengaturnya?
benez
1
@kewlbfy lihat @Kosar jawaban di bawah untuk di mana menggunakan -configbendera, ini bekerja untuk saya
danjah
36

Di Windows 10, tidak perlu memulai kembali atau menjalankan dalam mode Administrator tetapi sebaliknya mengatur openssl config seperti:

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

Tentu saja, jika Anda menggunakan GnuWin32

Mutiara Hitam
sumber
20

Di windows, [ Skenario serupa ]

Saya menghadapi masalah yang sama Tapi itu saat meminta Permintaan Penandatanganan Sertifikat.

Saya melakukan di bawah ini, Ini Berhasil untuk saya.

Setelah OpenSSL diinstal, Ran command prompt sebagai administrator setelah sistem reboot. [Untuk yang terbaik saya lakukan keduanya .. jalankan sebagai admin dan sistem reboot]

lakukan, 1. [Kasus Kesalahan]

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

PERINGATAN: tidak dapat membuka file konfigurasi: C: \ OpenSSL-Win64 \ bin \ openssl.cnf DAN Tidak dapat memuat info konfigurasi dari C: \ OpenSSL-Win64 \ bin \ openssl.cnf

2. [Bekerja dengan Peringatan]

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

[Pesan peringatan]: PERINGATAN: tidak dapat membuka file konfigurasi: C: \ OpenSSL-Win64 \ bin \ openssl.cnf

Tetapi meminta saya untuk Frasa Pass untuk server.key Ini berhasil bagi saya.

Saya merujuk, Tautan ini untuk bantuan saya.

Terima kasih.

mavis
sumber
Terima kasih, tautan yang Anda berikan sangat membantu saya: akadia.com/services/ssh_test_certificate.html
leole
15

Satu- satunya hal yang bekerja untuk saya dalam situasi ini adalah file openssl.cnf yang dibuat sendiri .

Berikut adalah dasar-dasar yang diperlukan untuk latihan ini (sunting sesuai kebutuhan):

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

Saya harap itu membantu.

simhumileco
sumber
1
Setelah mencoba setiap solusi lain yang tercantum di sini, solusi ini berhasil untuk saya. Setelah konfigurasi dibuat (dalam direktori openssl.exe) Anda dapat menjalankannyaopenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
Jimbo
12

Setelah menginstal OpenSSL, Anda harus me-restart komputer Anda dan menggunakan Run As Administrator. Lalu itu berhasil.

karthik
sumber
11

Dengan alat GnuWin32 saya menemukan openssl.cnf di bawah C: \ gnuwin32 \ share

set OPENSSL_CONF=C:\gnuwin32\share\openssl.cnf
TL
sumber
9

Bagi saya di Windows 8, saya hanya menemukan file openssl.cnf dan menyalinnya di drive C. kemudian:

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

Bekerja dengan sempurna.

Ali
sumber
6

Di Windows 7 saya tidak perlu memulai ulang, cukup jalankan command prompt dalam mode administrator.

Calgary Libertarian
sumber
4

Dalam kasus saya, saya perlu mengatur path file openssl.cnf secara manual pada perintah menggunakan configopsi. Jadi perintahnya

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
sumber
3

Jika Anda menggunakan Win32 OpenSSL v1.1.0g , atur variabel lingkungan ini:

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

Sebelum menjalankan perintah ini dengan "server.key" , berhasil membuat "server.csr" :

openssl req -new -key server.key -out server.csr
5ervant
sumber
1

Pada pertanyaan dasar mengapa openssl tidak ditemukan: Jawaban singkat: Beberapa paket instalasi untuk openssl memiliki openssl.cnf default yang sudah termasuk sebelumnya. Paket lain tidak. Dalam kasus terakhir, Anda akan memasukkan satu dari tautan yang ditunjukkan di bawah ini; Anda dapat memasukkan tambahan spesifik pengguna - namaDN, dll-- sesuai kebutuhan.

Dari https://www.openssl.org/docs/manmaster/man5/config.html, saya mengutip langsung:

"KONFIGURASI PERPUSTAKAAN OPENSSL

Aplikasi dapat secara otomatis mengkonfigurasi aspek-aspek tertentu dari OpenSSL menggunakan file konfigurasi master OpenSSL, atau secara opsional file konfigurasi alternatif. Utilitas openssl mencakup fungsionalitas ini: sub perintah apa pun menggunakan file konfigurasi master OpenSSL kecuali ada opsi yang digunakan dalam sub perintah untuk menggunakan file konfigurasi alternatif.

Untuk mengaktifkan konfigurasi pustaka, bagian standar perlu berisi baris yang sesuai yang menunjuk ke bagian konfigurasi utama. Nama standarnya adalah openssl_conf yang digunakan oleh utilitas openssl. Aplikasi lain dapat menggunakan nama alternatif seperti myapplication_conf. Semua baris konfigurasi pustaka muncul di bagian default di awal file konfigurasi.

Bagian konfigurasi harus terdiri dari satu set pasangan nilai nama yang berisi informasi konfigurasi modul tertentu. Nama tersebut mewakili nama modul konfigurasi. Arti nilainya adalah modul spesifik: itu mungkin, misalnya, mewakili bagian konfigurasi lebih lanjut yang berisi informasi spesifik modul konfigurasi. Misalnya:"

Jadi sepertinya seseorang harus mengkonfigurasi openssl.cnf sendiri sesuai dengan Distinguished Name (DN) Anda, bersama dengan entri lain yang spesifik untuk Anda gunakan.

Ini adalah file templat dari mana Anda dapat menghasilkan openssl.cnf dengan entri spesifik Anda.

Satu Aplikasi sebenarnya memiliki instalasi demo yang menyertakan file demo .cnf.

Selain itu, jika Anda perlu mengakses file .cnf secara terprogram, Anda bisa memasukkan header yang sesuai --openssl / conf.h-- dan mengurai file .cnf Anda menggunakan

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

Berikut adalah dokumen untuk "CONF_modules_load_file";

cinta kode
sumber
0

Bagi saya memasukkan variabel sebelum menelepon melakukan trik:

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

Di Windows Powershell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
Smith
sumber