OpenSSL и ошибка при чтении файла openssl.conf - PullRequest
107 голосов
/ 09 сентября 2011

Я использую Windows XP 32bit

Я только что скачал Openssl со следующего URL и установил его. http://www.slproweb.com/products/Win32OpenSSL.html

и затем я попытался создать самозаверяющий сертификат с помощью следующей команды

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

затем он начал выдавать следующую ошибку

Невозможно загрузить информацию о конфигурации из /usr/local/ssl/openssl.cnf

Затем, после поиска в Google, я изменил приведенную выше команду на

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

Но теперь я получаю следующую ошибку в командной строке

ошибка в строке -1 C: \ OpenSSL \ bin \ openssl.conf
4220: ошибка: 02001002: системная библиотека: fopen: такого файла нет или каталог:. \ Crypto \ био \ bss_file.c: 126: Еореп ( 'C: \ OpenSSL \ Bin \ openssl.conf', '' гь) 4220: ошибка: 2006D080: подпрограммы BIO: BIO_new_file: нет такого Файл:. \ Crypto \ био \ bss_file.c: 129
4220: ошибка: 0E078072: процедуры файла конфигурации: DEF_LOAD: нет такого Файл:. \ Crypto \ конф \ conf_def.c: 197

Пожалуйста, помогите. Заранее спасибо.

Ответы [ 14 ]

129 голосов
/ 28 июня 2012

В Windows вы также можете установить свойство среды OPENSSL_CONF.Например, из командной строки вы можете набрать:

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

, чтобы подтвердить его, вы можете набрать:

echo %OPENSSL_CONF%

Вы также можете установить его как часть переменных среды компьютера, чтобы все пользователи исервисы имеют его по умолчанию.См., Например, Переменные среды в Windows NT и Как управлять переменными среды в Windows XP .

Теперь вы можете запускать команды openssl без необходимости передавать конфигурациюпараметр местоположения.

37 голосов
/ 14 марта 2013

Просто добавьте в вашу командную строку параметр -config c:\your_openssl_path\openssl.cfg, изменив your_openssl_path на реальный установленный путь.

23 голосов
/ 03 ноября 2011

Просто создайте файл openssl.cnf самостоятельно, как показано на шаге 4: http://www.flatmtn.com/article/setting-openssl-create-certificates

Редактирование после прекращения работы ссылки Содержимое файла openssl.cnf было следующим:

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

Вы все еще можете найти страницу с помощью Waybackmachine: https://web.archive.org/web/20171108102046/http://www.flatmtn.com/article/setting-openssl-create-certificates

12 голосов
/ 16 декабря 2012

Просто попробуйте запустить openssl.exe от имени администратора.

12 голосов
/ 07 марта 2012

Если вы установили Apache с OpenSSL, перейдите в каталог bin.В моем случае D: \ apache \ bin.

* Эти команды также работают, если у вас есть отдельная установка openssl.

Запустите эти команды:

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

* Это создаст самозаверяющий сертификат, который вы можете использовать для целей разработки

Опять же, если у вас установлен Apache на флешке httpd.conf, вот эти:

  <IfModule ssl_module>
    SSLEngine on
    SSLCertificateFile "D:/apache/conf/server.crt"
    SSLCertificateKeyFile "D:/apache/conf/server.key"
  </IfModule>
11 голосов
/ 16 ноября 2013
set OPENSSL_CONF=c:/{path to openSSL}/bin/openssl.cfg

позаботьтесь о правильном расширении ( openssl.cfg не cnf)!

Я установил OpenSSL отсюда: http://slproweb.com/products/Win32OpenSSL.html

7 голосов
/ 04 июня 2012

У меня только что была похожая ошибка при использовании openssl.exe из папки Apache для Windows bin.У меня был флаг -config, указанный с помощью опечатки в пути к файлу openssl.cnf.Я думаю, вы обнаружите, что

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

должно быть

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

Примечание: conf должно быть cnf .

4 голосов
/ 26 июня 2015

Если установка openssl прошла успешно, найдите «OPENSSL» на диске c, чтобы найти файл конфигурации и указать путь.

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

Это сработало для меня.

3 голосов
/ 10 марта 2017

Этот обходной путь очень помог нам в моей работе (техническая поддержка), мы создали простой пакетный файл, который мы могли запускать из любого места (у нас не было разрешения на его установку). Этот обходной путь установит переменную и затем запустит OpenSSL для вас. Он также открывает папку bin (потому что именно здесь будут сохраняться любые файлы, которые вы создаете или изменяете) Кроме того, это только для Windows.

Как настроить:

  1. Загрузите двоичные файлы OpenSSL здесь . (Обратите внимание, что это подтверждается для работы с версией 0.9.8h.)
  2. Скопируйте этот код в файл с именем StartOpenSSL.bat. Сохраните это в выбранном вами месте. Его можно запустить из любого места.

    @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 распакуйте их на диск C в папку с именем OpenSSL. (Путь должен быть C: \ OpenSSL). Не перемещайте содержимое папок, просто извлеките их в папку.
  4. Вы готовы использовать OpenSSL. Это отличный обходной путь для пользователей Windows, у которых нет прав на его установку, поскольку для этого не требуются разрешения. Просто запустите файл летучей мыши из ранее, дважды щелкнув по нему.
2 голосов
/ 14 июня 2015

Проблема здесь в том, что нет файла openssl.cnf, предоставленного GnuWin32 openssl.Вы должны создать это.Вы можете узнать, КАК создать файл openssl.cnf, перейдя по ссылке:

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

Где все это изложено для вас о том, как это сделать.* ОБРАТИТЕ ВНИМАНИЕ: команда openssl, указанная с обратной косой чертой в конце, предназначена для UNIX.Для Windows: 1) Удалите обратную косую черту и 2) Переместите вторую строку вверх, чтобы она была в конце первой строки.(Таким образом, вы получаете только одну команду.)

ТАКЖЕ: ОЧЕНЬ важно прочитать комментарии.На их основе вы можете внести некоторые изменения.

...