Windows'ta /usr/local/ssl/openssl.cnf adresinden yapılandırma bilgileri yüklenemiyor


184

Windows'ta OpenSSL kullanırken:

openssl genrsa -out privatekey.pem 1024 -->

Başarıyla oluşturuldu

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

Hata mesajı şu şekilde gösteriliyor

/usr/local/ssl/openssl.cnf adresinden yapılandırma bilgileri yüklenemiyor


4
Tüm cevaplar bir şekilde biri configs openssl.cnf başvurmak gerektiğini göstermektedir .. AMA kimse kimse hangi yapılandırma dosya bahsetmez ?? kim yaratır, ?? içeriği nedir?
Joedotnot

Yanıtlar:


171

OpenSSL yüklendikten sonra yeni bir ortam değişkeni yaratmam gerekiyordu:

  • Ad: OPENSSL_CONF
  • Değeri: C:\Program Files\OpenSSL\openssl.cnf

Powershell'de:

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

Bu değer önceki yükleme sürümlerinden farklıdır (bu gönderinin önceki düzenlemesinde görüldüğü gibi). Ayrıca, yolunuza openssl ikili klasörünü eklemeyi unutmayın ${env:ProgramFiles}\OpenSSL.


16
1.0.1j sürümünde C:\OpenSSL-Win32\bin\openssl.cfgbunun yerine kullanmak zorunda kaldım .
Kevin Panko

7
Veya C: \ OpenSSL-Win64 \ bin \ openssl.cfg
64 bit

13
Veya C:\Program Files (x86)\Git\ssl\openssl.cfgzaten git ile olanlar için.
kspearrin

bu değeri nerede / nasıl ayarlıyorsunuz?
matthew_360

Bu, kullanıcının başlangıç ​​ortamına koyacaktır:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
Ross Presser

78

Konfigürasyonun mutlak yolunu belirtmelisiniz, şöyle bir şey:

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

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

4
Slproweb.com/products/Win32OpenSSL.html adresinden indirilen Sürüm 1.0.1e'de, kurulumdanopenssl.cfg sonra yalnızca bin dizininde bulunan dosya vardır . Ancak bu dosya ile zaten çalışıyor gibi görünüyor.
vanje

9
Git ile sağlanan OpenSSL'yi kullanıyorsanız o zaman deneyebilirsiniz-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B

2
openssl: Hata: '-config' geçersiz bir komut. nasıl ayarlıyorsunuz?
benez

1
@kewlbfy see @Kosar -configBayrağı nerede kullanacağınız için aşağıdaki cevaba bakın , bu benim için çalıştı
danjah

36

Windows 10'da Yönetici modunda yeniden başlatmaya veya çalıştırmaya gerek yoktur, bunun yerine openssl config'i şöyle ayarlayın:

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

Tabii ki kullanıyorsanız GnuWin32


20

Windows'da [ Benzer senaryo ]

Aynı sorunla karşı karşıya kaldım ancak Sertifika İmzalama İsteği için istekte bulunuldu.

Aşağıdakileri yaptım, benim için çalıştı.

OpenSSL kurulduktan sonra, sistem yeniden başlatıldıktan sonra yönetici olarak komut istemi çalıştırıldı.

yaptı, 1. [Hata Durumu]

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

UYARI: yapılandırma dosyası açılamıyor: C: \ OpenSSL-Win64 \ bin \ openssl.cnf VE C: \ OpenSSL-Win64 \ bin \ openssl.cnf dosyasından yapılandırma bilgisi yüklenemiyor

2. [Uyarı ile Çalıştı]

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

[Uyarı mesajı]: UYARI: yapılandırma dosyası açılamıyor: C: \ OpenSSL-Win64 \ bin \ openssl.cnf

Ama bana server.key için Pass Phrase komutunu istedi. Benim için çalıştı .

Ben, yardım için bu bağlantıya başvurdum.

Teşekkür ederim.


Teşekkürler, sağladığınız bağlantı bana çok yardımcı oldu: akadia.com/services/ssh_test_certificate.html
leole

15

Sadece bu durumda benim için çalıştı şeydi kendi yarattığı openssl.cnf dosyası .

Bu alıştırma için gerekli temel bilgiler şunlardır (gerekirse düzenleyin):

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

Umarım bu yardımcı olur.


1
Burada listelenen her çözümü denedikten sonra, bu benim için çalıştı. Yapılandırma oluşturulduktan sonra (openssl.exe dizininde) çalıştırabilirsinizopenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
Jimbo

12

OpenSSL yüklendikten sonra, bilgisayarınızı yeniden başlatmanız ve kullanmanız gerekir Run As Administrator. Sonra işleri.


11

GnuWin32 araçlarıyla openssl.cnf dosyasını C: \ gnuwin32 \ share altında buldum

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

9

Benim için Windows 8'de, openssl.cnf dosyasını buldum ve C sürücüsüne kopyaladım. sonra:

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

Mükemmel çalıştı.


6

Windows 7'de yeniden başlatmak zorunda kalmadım, komut istemini yönetici modunda çalıştırın.


4

Benim durumumda, seçeneği kullanarak komutta openssl.cnf dosyasının yolunu el ile ayarlamam gerekiyor config. Yani komut

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

Win32 OpenSSL v1.1.0g kullanıyorsanız , bu ortam değişkenini ayarlayın:

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

Bu komutu "server.key" ile çalıştırmadan önce , "server.csr" dosyasını başarıyla oluşturun :

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

1

Openssl'nin neden bulunmadığı temel sorusu: Kısa yanıt: openssl için bazı yükleme paketlerinde varsayılan olarak openssl.cnf önceden bulunur. Diğer paketler yoktur. İkinci durumda, aşağıda gösterilen bağlantıdan bir tane ekleyeceksiniz; Gerekirse, kullanıcıya özel ekler --DN adı vb. - girebilirsiniz.

Gönderen https://www.openssl.org/docs/manmaster/man5/config.html,I doğrudan alıntı:

"AÇIK KÜTÜPHANE YAPILANDIRMASI

Uygulamalar, ana OpenSSL yapılandırma dosyasını veya isteğe bağlı olarak alternatif bir yapılandırma dosyasını kullanarak OpenSSL'nin belirli yönlerini otomatik olarak yapılandırabilir. Openssl yardımcı programı bu işlevi içerir: alt komutta alternatif bir yapılandırma dosyası kullanmak için bir seçenek kullanılmadıkça, herhangi bir alt komut, ana OpenSSL yapılandırma dosyasını kullanır.

Kütüphane yapılandırmasını etkinleştirmek için varsayılan bölümün, ana yapılandırma bölümünü gösteren uygun bir satır içermesi gerekir. Varsayılan ad, openssl yardımcı programı tarafından kullanılan openssl_conf'dur. Diğer uygulamalar myapplication_conf gibi alternatif bir ad kullanabilir. Tüm kütüphane yapılandırma satırları, yapılandırma dosyasının başlangıcındaki varsayılan bölümde görünür.

Konfigürasyon bölümü, belirli modül konfigürasyon bilgilerini içeren bir dizi isim değeri çiftinden oluşmalıdır. Ad, yapılandırma modülünün adını temsil eder. Değerin anlamı modüle özgüdür: örneğin, yapılandırma modülüne özgü bilgileri içeren başka bir yapılandırma bölümünü temsil edebilir. Örneğin:"

Bu yüzden, kullanımınıza özgü diğer girişlerle birlikte, openssl.cnf'yi Ayırt Edici Adınıza (DN) göre kendi kendine yapılandırması gerekir.

Burada , belirli girişlerinizle openssl.cnf oluşturabileceğiniz şablon dosyasıdır.

Bir Uygulama aslında bir demo .cnf dosyası içeren bir demo yüklemesine sahiptir.

Ayrıca, .cnf dosyalarına programlı olarak erişmeniz gerekiyorsa, uygun başlıklar --openssl / conf.h - ekleyebilir ve .cnf dosyalarınızı

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

İşte "CONF_modules_load_file" için dokümanlar;


0

Benim için hile yapmadan önce değişken koymak benim için:

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

0

Windows Powershell'de:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.