OpenSSL dan kesalahan dalam membaca file openssl.conf

119

Saya menjalankan windows xp 32bit

Saya baru saja mengunduh Openssl dari URL berikut dan menginstalnya. http://www.slproweb.com/products/Win32OpenSSL.html

dan kemudian saya mencoba membuat sertifikat yang ditandatangani sendiri dengan menggunakan perintah berikut

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

kemudian mulai memberikan kesalahan berikut

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

Kemudian setelah googling kadang saya mengubah perintah di atas menjadi

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

Tapi sekarang saya mendapatkan kesalahan berikut di command prompt

kesalahan pada baris -1 dari C: \ OpenSSL \ bin \ openssl.conf
4220: error: 02001002: perpustakaan sistem: fopen: Tidak ada file atau direktori seperti itu:. \ crypto \ bio \ bss_file.c: 126: fopen ('C: \ OpenSSL \ bin \ openssl.conf ',' rb ') 4220: error: 2006D080: BIO routine: BIO_new_file: tidak ada file seperti itu:. \ Crypto \ bio \ bss_file.c: 129:
4220: error: 0E078072: rutinitas file konfigurasi : DEF_LOAD: tidak ada file seperti itu:. \ Crypto \ conf \ conf_def.c: 197:

Tolong bantu. Terima kasih sebelumnya.

Sreeram
sumber
3
periksa nama file yang tepat: openssl.conf ---> openssl.cnf
Tandai
2
ekstensi file pada Windows sekarang menjadi .cfg. Juga pastikan bahwa jalur file yang ditentukan (pada baris perintah atau dalam variabel lingkungan OPENSSL_CONF) tidak di dalam tanda kutip.
tatx
Ekstensi file (.cnf / .cfg) tampaknya bervariasi bergantung pada apa yang digunakan untuk menginstal OpenSSL. Pada instalasi WampServer v3.2.2, saya baru saja melakukan konfigurasi nama file adalah openssl.cnf. Saya juga melakukan instalasi Window10 64-bit menggunakan binari dari Shining Path Productions. Nama file dalam penginstalan itu adalah openssl.cfg. Perbedaan dalam nama ekstensi file konfigurasi OpenSSL ini tampaknya bergantung pada kompilasi. Saya belum menguji nama ekstensi mana yang dikenali oleh OpenSSL v1.1.1g.
Bill Vallance

Jawaban:

141

Di Windows, Anda juga dapat mengatur properti lingkungan OPENSSL_CONF. Misalnya dari commandline Anda bisa mengetik:

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

untuk memvalidasinya, Anda dapat mengetik:

echo %OPENSSL_CONF%

Anda juga dapat mengaturnya sebagai bagian dari variabel lingkungan komputer sehingga semua pengguna dan layanan menyediakannya secara default. Lihat, misalnya, variabel lingkungan di Windows NT dan Cara Mengelola Variabel Lingkungan di Windows XP .

Sekarang Anda dapat menjalankan perintah openssl tanpa harus melewati parameter lokasi konfigurasi.

dvtoever
sumber
9
Terima kasih, berhasil untuk saya! (setel OPENSSL_CONF = c: \ openssl-win32 \ bin \ openssl.cfg)
Valentin Heinitz
@jww mencoba ini tetapi saya diberitahu bahwa set adalah perintah yang tidak valid. ada ide?
Sarah
3
@ Sarah - setadalah perintah Windows, dan dimaksudkan untuk dijalankan cmd.exe. Ini tidak akan berfungsi pada mesin non-Windows. Hal setdan echojuga tidak berfungsi di Power Shell. Anda akan menggunakan sesuatu seperti $X=1; Write-Output $X.
jww
@jww terima kasih. saya menggunakan mesin windows tetapi saya menggunakan perintah itu di openssl.exe, bukan cmd.exe .. Saya membaca komentar Anda dan membuka cmd.exe dan mengetikkan perintah set di sana. Ini bekerja dengan benar tetapi saya masih mendapatkan kesalahan yang sama di openssl.exe yang mengatakan "Tidak dapat memuat info konfigurasi dari salah_path / ssl / openssl.cnf" jadi saya mencoba solusi di bawah ini dengan mengatakan untuk menambahkan parameter -config dengan direktori openssl Anda dan itu bekerja dengan sempurna. jadi saya senang. terima kasih atas bantuannya :)
Sarah
Harus ditandai sebagai jawaban. Terus terang seharusnya juga tidak perlu. Mengapa distro OpenSSL Windows ini tidak hanya default ke PWD misalnya?
stonedauwg
40

Cukup tambahkan parameter ke baris perintah Anda -config c:\your_openssl_path\openssl.cfg, ubah your_openssl_pathke jalur terinstal yang sebenarnya.

Nikl
sumber
hebat, telah mengikuti posting blog ini ajden.towfeek.se/post/… dan menambahkan -config juga berfungsi untuk cygwin, misalnya. $ openssl ca -in server.csr -config /etc/ssl/openssl.cnf Tetapi mengapa -config tidak terdaftar di man openssl? openssl.org/docs/apps/openssl.html
barlop
@nneonneo mencoba ini dan solusi di atas tetapi memberi tahu saya set dan config adalah perintah yang tidak valid. ada ide?
Sarah
set hanya berfungsi di Windows; config bukanlah perintah independen (Anda menambahkannya ke baris perintah OpenSSL Anda).
nneonneo
29

Cukup buat file openssl.cnf sendiri seperti ini di langkah 4: http://www.flatmtn.com/article/setting-openssl-create-certificates

Edit setelah link berhenti bekerja Konten file openssl.cnf adalah sebagai berikut:

#
# 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
sumber
1
URL tidak lagi ditemukan
Greg Domjan
15
set OPENSSL_CONF=c:/{path to openSSL}/bin/openssl.cfg

jaga ekstensi yang tepat ( openssl.cfg bukan cnf)!

Saya telah menginstal OpenSSL dari sini: http://slproweb.com/products/Win32OpenSSL.html


sumber
Tautan instalasi membantu, saya mengunduh 0.9.8 dari tempat lain dan tidak berfungsi. Terima kasih.
EpicPandaForce
14

Jika Anda telah menginstal Apache dengan OpenSSL, buka direktori bin. Dalam kasus saya D: \ apache \ bin.

* Perintah ini juga bekerja jika Anda memiliki instalasi opensl yang berdiri sendiri.

Jalankan perintah ini:

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

* Ini akan membuat sertifikat yang ditandatangani sendiri yang dapat Anda gunakan untuk tujuan pengembangan

Sekali lagi jika Anda telah menginstal Apache di httpd.conf tongkat ini:

  <IfModule ssl_module>
    SSLEngine on
    SSLCertificateFile "D:/apache/conf/server.crt"
    SSLCertificateKeyFile "D:/apache/conf/server.key"
  </IfModule>
Artur Kędzior
sumber
Orang yang mengajukan pertanyaan dengan jelas menyatakan bahwa dia menggunakan Win32OpenSSL. Darimana barang-barang Apache itu berasal? Seberapa relevan dengan pertanyaan tersebut?
jww
3
Tentu saja, menginstal OpenSSL yang datang secara terpisah atau dengan Apache adalah hal yang sama. Saya telah menambahkan bit Apache karena dalam 95% kasus alasan menginstal OpenSSL di Windows adalah karena akan digunakan dengan Apache.
Artur Kędzior
Ini berguna karena XAMPP menyertakan OpenSSL di dalam folder Apache.
Jimmy Adaro
Bekerja seperti pesona!
Divyesh Prajapati
12

Coba saja jalankan openssl.exe sebagai administrator.

Serghei Grajdean
sumber
2
Anda tidak harus menjalankan perintah ini sebagai administrator untuk membuatnya berfungsi. Lebih baik memperbaiki masalah yang mendasarinya.
jww
Jika diinstal ke direktori file program pada drive sistem, menjalankan perintah dengan hak yang ditinggikan diperlukan, Anda tidak memiliki izin menulis sebaliknya.
CodeManX
1
Ini berhasil untuk saya. Saya tidak tahu mengapa itu mencoba mengakses C:\Program Files\Common Files\SSL/openssl.cnfdan kemudian ketika berjalan sebagai admin tiba-tiba tidak peduli tidak dapat menemukannya (dan juga tidak membuat file) tetapi ini berhasil untuk saya jadi saya tidak peduli antara.
Simon_Weaver
7

Saya baru saja mengalami kesalahan serupa menggunakan openssl.exe dari Apache untuk folder bin windows. Saya memiliki flag -config yang ditentukan oleh salah ketik di jalur file openssl.cnf. Saya pikir Anda akan menemukannya

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

seharusnya

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

Catatan: conf mungkin harus cnf .

Nic Cottrell
sumber
4

Jika instalasi openssl berhasil, cari "OPENSSL" di drive c untuk menemukan file konfigurasi dan setel jalurnya.

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

Itu berhasil bagi saya.

hermes101
sumber
3

Solusi ini sangat membantu kami dalam pekerjaan saya (Dukungan Teknis), kami membuat file batch sederhana yang dapat kami jalankan dari mana saja (Kami tidak memiliki izin untuk menginstalnya). Solusi ini akan menetapkan variabel dan kemudian menjalankan OpenSSL untuk Anda. Ini juga membuka folder bin untuk Anda (karena di sinilah semua file yang Anda buat atau modifikasi akan disimpan). Juga, ini hanya untuk Windows.

Cara Mengatur:

  1. Unduh binari OpenSSL di sini . (Perhatikan bahwa ini dikonfirmasi untuk bekerja dengan versi 0.9.8h.)
  2. Salin kode ini ke file bernama StartOpenSSL.bat. Simpan ini ke lokasi pilihan Anda. Bisa dijalankan dari mana saja.

    @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. Setelah Anda mengunduh binari OpenSSL, ekstrak ke drive C Anda di folder berjudul OpenSSL. (Path harus C: \ OpenSSL). Jangan memindahkan konten folder apa pun, cukup ekstrak ke folder tersebut.
  4. Anda siap menggunakan OpenSSL. Ini adalah solusi yang bagus untuk pengguna Windows yang tidak memiliki hak istimewa untuk menginstalnya karena tidak memerlukan izin. Jalankan saja file bat dari sebelumnya dengan mengklik dua kali.
Rex Linder
sumber
2

Masalahnya di sini adalah bahwa TIDAK ada file openssl.cnf yang diberikan dengan barang-barang openssl GnuWin32. Anda harus membuatnya. Anda dapat mengetahui CARA membuat file openssl.cnf dengan membuka di sini:

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

Di mana itu menjelaskan semuanya untuk Anda tentang bagaimana melakukannya.

HARAP DICATAT: Perintah openssl yang diberikan dengan garis miring terbalik di bagian akhir adalah untuk UNIX. Untuk Windows: 1) Hapus garis miring terbalik, dan 2) Pindahkan baris kedua ke atas sehingga berada di akhir baris pertama. (Jadi Anda hanya mendapatkan satu perintah.)

JUGA: SANGAT penting untuk membaca komentar. Ada beberapa perubahan yang mungkin ingin Anda lakukan berdasarkan itu.

Mark Manning
sumber
2

Saya memiliki masalah yang sama di Windows. Itu diatasi dengan mengatur variabel lingkungan sebagai berikut:

Nama variabel: OPENSSL_CONF Nilai variabel: C: (Direktori OpenSSl) \ bin \ openssl.cnf

Braullio Soares
sumber
1

Jika Anda melihat kesalahan seperti

kesalahan pada baris -1 c: apacheconfopenssl.cnf

coba ubah dari garis miring belakang ke garis miring depan di -config.

Jauyzed
sumber
1

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

  1. pertama, pastikan Anda memiliki openssl.cnffile di jalur yang benar;
  2. jika Anda tidak dapat menemukannya, cukup unduh satu dan salin ke jalur pengaturan Anda.
$ echo %OPENSSL_CONF%

$ set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cnf
xgqfrms.dll
sumber
OpenSSL & node.js
xgqfrms
tidak dapat menemukan C: \ OpenSSL \
Snehal Dwivedi
@SnehalDwivedi silakan ikuti langkah-langkah seperti yang saya jelaskan.
xgqfrms
0

Jalankan perintah sebagai administrator dan salin file konfigurasi ke suatu tempat di mana Anda memiliki hak baca dan tentukan jalur dengan parameter -config.

Dexion
sumber
0

Saya tahu ini sudah tua - tetapi berpikir orang lain yang terjadi pada ini (dan menggunakan Visual Studio) mungkin mendapat manfaat. Saya membaca ini di posting lain yang sepertinya tidak dapat saya temukan.

Buka konfigurasi Anda di notepad ++ dan pastikan Pengkodeannya adalah UTF-8 (yaitu, bukan UTF-8-BOM *).

Ini akan menyelamatkan saya dari banyak pencarian / trial'n'errors ...

jimnkey
sumber
0

Saya tahu pertanyaan ini sudah tua tetapi inilah cara saya menyelesaikannya.

Saya menyalin openssl.cnffile dari bindirektori ke direktori induk yang C:/Openssl/openssl.cnfbukan C:/Openssl/bin/openssl.cnfdan berfungsi dengan baik.

ahmed nader
sumber