OpenSSL ve openssl.conf dosyasını okurken hata


119

Windows xp 32bit çalıştırıyorum

Opensl'yi aşağıdaki URL'den indirdim ve yükledim. http://www.slproweb.com/products/Win32OpenSSL.html

ve sonra aşağıdaki komutu kullanarak kendinden imzalı bir sertifika oluşturmaya çalıştım

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

sonra şu hatayı vermeye başladı

/Usr/local/ssl/openssl.cnf adresinden yapılandırma bilgisi yüklenemiyor

Sonra bir süre googling yaptıktan sonra yukarıdaki komutu şu şekilde değiştirdim:

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

Ama şimdi komut isteminde aşağıdaki hatayı alıyorum

C: \ OpenSSL \ bin \ openssl.conf
4220'nin -1 satırındaki hata : hata: 02001002: sistem kitaplığı: fopen: Böyle bir dosya veya dizin yok:. \ crypto \ bio \ bss_file.c: 126: fopen ('C: \ OpenSSL \ bin \ openssl.conf ',' rb ') 4220: hata: 2006D080: BIO rutinleri: BIO_new_file: böyle bir dosya yok:. \ Crypto \ bio \ bss_file.c: 129:
4220: hata: 0E078072: yapılandırma dosyası yordamları : DEF_LOAD: böyle bir dosya yok:. \ Crypto \ conf \ conf_def.c: 197:

Lütfen yardım et. Şimdiden teşekkürler.


3
Tam dosya adını kontrol edin: openssl.conf ---> openssl.cnf
Mark

2
Windows'taki dosya uzantısı artık .cfg'dir. Ayrıca, belirtilen dosya yolunun (komut satırında veya OPENSSL_CONF ortam değişkeninde) tırnak içinde olmadığından emin olun.
tatx

Dosya uzantısı (.cnf / .cfg), OpenSSL'yi yüklemek için neyin kullanıldığına bağlı olarak değişiyor gibi görünüyor. Bir WampServer v3.2.2 kurulumunda, yapılandırma dosya adı openssl.cnf idi. Ayrıca Shining Path Productions'ın ikili dosyalarını kullanarak bir Window10 64-bit kurulumu yaptım. Bu kurulumdaki dosya adı openssl.cfg idi. OpenSSL yapılandırma dosyası uzantısı adlarındaki bu fark, derlemeye bağlı görünüyor. OpenSSL v1.1.1g tarafından hangi uzantı adının tanındığını henüz test etmedim.
Bill Vallance

Yanıtlar:


141

Windows'ta ortam özelliğini de ayarlayabilirsiniz OPENSSL_CONF. Örneğin komut satırından şunları yazabilirsiniz:

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

doğrulamak için yazabilirsiniz:

echo %OPENSSL_CONF%

Ayrıca bunu bilgisayarın çevresel değişkenlerinin bir parçası olarak da ayarlayabilirsiniz, böylece tüm kullanıcılar ve hizmetler varsayılan olarak kullanılabilir. Bkz, örneğin, Windows NT Ortam değişkenleri ve Windows XP'de Ortam değişkenleri yönet .

Artık, yapılandırma konumu parametresini geçmek zorunda kalmadan openssl komutlarını çalıştırabilirsiniz.


9
Teşekkürler, benim için çalıştı! (OPENSSL_CONF = c: \ openssl-win32 \ bin \ openssl.cfg olarak ayarlayın)
Valentin Heinitz

@jww bunu denedi ama setin geçersiz bir komut olduğunu söylüyor. herhangi bir fikir?
Sarah

3
@Sarah - setbir Windows komutudur ve çalıştırılması amaçlanmıştır cmd.exe. Windows olmayan bir makinede çalışmaz. setVe echobir şey ya, Güç Kabuğu'nda çalışmaz. Gibi bir şey kullanırsınız $X=1; Write-Output $X.
jww

@jww teşekkür ederim. Windows makinesindeyim ama bu komutu cmd.exe yerine openssl.exe'de kullanıyordum .. Yorumunuzu okudum ve cmd.exe'ye gittim ve oraya set komutunu yazdım. Doğru çalıştı ama yine de openssl.exe dosyasında "yanlış_path / ssl / openssl.cnf'den yapılandırma bilgisi yüklenemiyor" diyerek aynı hatayı alıyordum, bu yüzden openssl dizininize -config parametresini eklemek için aşağıdaki çözümü denedim ve mükemmel çalıştı. bu yüzden mutluyum. yardım için teşekkürler :)
Sarah

Cevap olarak işaretlenmelidir. Açıkçası da gereksiz olmalı. Örneğin, bu OpenSSL Windows dağıtımı neden yalnızca PWD'yi varsayılan olarak ayarlamıyor?
stonedauwg

40

Sadece komut satırına parametre eklemek -config c:\your_openssl_path\openssl.cfgdeğişen, your_openssl_pathgerçek yüklü yola.


harika, bu blog gönderisini takip ediyorum ajden.towfeek.se/post/… ve -config eklemek cygwin için de işe yarıyor. Örneğin $ openssl ca -in server.csr -config /etc/ssl/openssl.cnf , bu -config neden man openssl'de listelenmiyor? openssl.org/docs/apps/openssl.html
barlop

@nneonneo bunu ve yukarıdaki çözümü denedi ama bana set ve config'in geçersiz komutlar olduğunu söylüyor. herhangi bir fikir?
Sarah

set yalnızca Windows'ta çalışır; config bağımsız bir komut değildir (OpenSSL komut satırınıza eklersiniz).
nneonneo

29

4. adımda kendiniz bir openssl.cnf dosyası oluşturun: http://www.flatmtn.com/article/setting-openssl-create-certificates

Bağlantının çalışması durduktan sonra düzenle openssl.cnf dosyasının içeriği şöyleydi:

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

1
URL artık bulunamadı
Greg Domjan

15
set OPENSSL_CONF=c:/{path to openSSL}/bin/openssl.cfg

doğru uzantıya dikkat edin ( openssl.cfg , cnf değil)!

OpenSSL'yi buradan kurdum: http://slproweb.com/products/Win32OpenSSL.html


Kurulum bağlantısı yardımcı oldu, 0.9.8'i başka bir yerden indirdim ve çalışmıyordu. Teşekkür ederim.
EpicPandaForce

14

Apache'yi OpenSSL ile kurduysanız, bin dizinine gidin. Benim durumumda D: \ apache \ bin.

* Bu komutlar, bağımsız openssl kurulumunuz varsa da çalışır.

Şu komutları çalıştırın:

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

* Bu, geliştirme amacıyla kullanabileceğiniz kendinden imzalı sertifika oluşturacaktır.

Yine, httpd.conf dosyasında Apache kuruluysa şunları yapıştırın:

  <IfModule ssl_module>
    SSLEngine on
    SSLCertificateFile "D:/apache/conf/server.crt"
    SSLCertificateKeyFile "D:/apache/conf/server.key"
  </IfModule>

Soruyu soran adam açıkça Win32OpenSSL kullandığını belirtti. Apaçiler nereden geldi? Soruyla ne ilgisi var?
jww

3
Elbette, ayrı olarak veya Apache ile birlikte gelen OpenSSL'yi kurmak aynı şeydir. Apache bitini ekledim çünkü vakaların% 95'inde Windows'a OpenSSL kurulmasının nedeni Apache ile kullanılacak olmasıdır.
Artur Kędzior

Bu yararlıdır çünkü XAMPP, Apache klasörünün içinde OpenSSL içerir.
Jimmy Adaro

Bir cazibe gibi çalışıyor!
Divyesh Prajapati

12

Yönetici olarak openssl.exe'yi çalıştırmayı deneyin.


2
Çalışmaları için bu komutları yönetici olarak çalıştırmanız gerekmemelidir. Altta yatan sorunu çözmek daha iyidir.
jww

Sistem sürücüsündeki program dosyaları dizinine kuruluysa, komutu yükseltilmiş haklarla çalıştırmak gerekir, aksi takdirde yazma izniniz olmaz.
CodeManX

1
Bu benim için çalıştı. Neden erişmeye çalıştığını bilmiyorum C:\Program Files\Common Files\SSL/openssl.cnfve sonra yönetici olarak çalışırken aniden onu bulamadığını umursamadı (ve dosyayı da oluşturmadı) ama bu benim için çalıştı, bu yüzden umrumda değil ya.
Simon_Weaver

7

Apache for windows bin klasöründen openssl.exe'yi kullanırken benzer bir hata yaşadım. -Config bayrağının openssl.cnf dosyasının yolunda bir yazım hatası olduğunu belirttim. Bence bulacaksın

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

olmalı

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

Not: conf muhtemelen cnf olmalıdır .


4

Openssl kurulumu başarılı olduysa, yapılandırma dosyasını bulmak ve yolu ayarlamak için c sürücüsünde "OPENSSL" araması yapın.

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

Benim için çalıştı.


3

Bu geçici çözüm işimde bize çok yardımcı oldu (Teknik Destek), her yerden çalıştırabileceğimiz basit bir toplu iş dosyası oluşturduk (Yükleme iznimiz yoktu). Bu geçici çözüm, değişkeni ayarlayacak ve ardından sizin için OpenSSL'yi çalıştıracaktır. Ayrıca sizin için bin klasörünü açar (çünkü oluşturduğunuz veya değiştirdiğiniz tüm dosyaların kaydedileceği yer burasıdır). Ayrıca, bu yalnızca Windows içindir.

Nasıl kurulur:

  1. OpenSSL ikili dosyalarını buradan indirin . (Bunun 0.9.8h sürümüyle çalıştığının onaylandığını unutmayın.)
  2. Bu kodu StartOpenSSL.bat adlı bir dosyaya kopyalayın. Bunu seçtiğiniz bir yere kaydedin. Herhangi bir yerden çalıştırılabilir.

    @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. OpenSSL ikili dosyalarını indirdikten sonra, bunları OpenSSL adlı bir klasöre C sürücünüze çıkartın. (Yolun C: \ OpenSSL olması gerekir). Klasör içeriklerinin hiçbirini taşımayın, sadece bunları klasöre çıkarın.
  4. OpenSSL'yi kullanmaya hazırsınız. Bu, herhangi bir izin gerektirmediğinden, yükleme ayrıcalıklarına sahip olmayan Windows kullanıcıları için harika bir çözümdür. Sadece daha önceki yarasa dosyasını çift tıklayarak çalıştırın.

2

Buradaki sorun, GnuWin32 openssl öğesiyle verilen bir openssl.cnf dosyası OLMAMASIDIR. Onu yaratmalısın. Nasıl openssl.cnf dosyası oluşturacağınızı şuraya giderek öğrenebilirsiniz:

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

Nasıl yapılacağına dair her şeyi sizin için ortaya koyduğu yer.

LÜTFEN DİKKAT: Sonunda ters eğik çizgi ile verilen openssl komutu UNIX içindir. Windows için: 1) Ters eğik çizgiyi kaldırın ve 2) İkinci satırı, birinci satırın sonunda olacak şekilde yukarı taşıyın. (Böylece sadece bir komut alırsınız.)

AYRICA: Yorumları okumak ÇOK önemlidir. Bunlara dayanarak yapmak isteyebileceğiniz bazı değişiklikler var.


2

Windows'ta da aynı sorunu yaşadım. Ortam değişkeni aşağıdaki gibi ayarlanarak çözüldü:

Değişken adı: OPENSSL_CONF Değişken değeri: C: (OpenSSl Dizini) \ bin \ openssl.cnf


1

Şuna benzer bir hata görüyorsanız

-1 c satırındaki hata: apacheconfopenssl.cnf

-config'de ters eğik çizgiden ön eğik çizgiye geçmeyi deneyin.



0

Komutu yönetici olarak çalıştırın ve yapılandırma dosyasını okuma haklarına sahip olduğunuz bir yere kopyalayın ve yolu -config parametresiyle belirtin.


0

Bunun eski olduğunu biliyorum - ancak bunun üzerine olanların (ve Visual Studio kullanmanın) fayda sağlayabileceğini düşündüm. Bunu bulamadığım başka bir gönderide okudum.

Yapılandırmanızı notepad ++ ile açın ve Kodlamasının UTF-8 olduğundan emin olun (yani UTF-8-BOM * değil).

Bu beni çok fazla arama / deneme hatası kurtarırdı ...


0

Bu sorunun eski olduğunu biliyorum ama işte nasıl çözdüm.

Ben kopyalanan openssl.cnfdosyayı binolan üst dizine dizine C:/Openssl/openssl.cnfyerine C:/Openssl/bin/openssl.cnfve çalıştığı ince.

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.