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


184

При использовании OpenSSL в Windows:

openssl genrsa -out privatekey.pem 1024 -->

Создано успешно

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

Отображение сообщения об ошибке как

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


4
Все ответы показывают, что каким-то образом нужно ссылаться на файл конфигурации openssl.cnf. кто это создает, каково его содержание?
joedotnot

Ответы:


171

После установки OpenSSL мне потребовалось создать новую переменную среды:

  • Название: OPENSSL_CONF
  • Стоимость: C:\Program Files\OpenSSL\openssl.cnf

В PowerShell:

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

Это значение отличается от предыдущих версий установки (как видно из предыдущего редактирования этого сообщения). Также не забудьте добавить бинарную папку openssl ${env:ProgramFiles}\OpenSSLв ваш путь.


16
На версии 1.0.1j мне пришлось использовать C:\OpenSSL-Win32\bin\openssl.cfgвместо этого.
Кевин Панко

7
Или C: \ OpenSSL-Win64 \ bin \ openssl.cfg в 64-битных системах
borjab

13
Или C:\Program Files (x86)\Git\ssl\openssl.cfgдля тех, кто уже с мерзавцем.
kspearrin

где / как вы устанавливаете это значение?
Matthew_360

Это поместит его в среду запуска вашего пользователя:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
Ross Presser

78

Вы должны указать абсолютный путь к конфигурации, примерно так:

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

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

4
В версии 1.0.1e, загруженной с slproweb.com/products/Win32OpenSSL.html,openssl.cfg после установки в каталоге bin присутствует только файл . Но с этим файлом, похоже, все равно работает.
Ванье

9
Если вы используете OpenSSL, поставляемый с Git, вы можете попробовать-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B

2
openssl: Ошибка: '-config' - недопустимая команда. как вы, ребята, настроили это?
Benez

1
@kewlbfy см. ответ @Kosar ниже о том, где использовать -configфлаг, это сработало для меня
danjah

36

В Windows 10 нет необходимости перезагружать или запускать в режиме администратора, но вместо этого установите конфигурацию openssl следующим образом:

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

Конечно, если вы используете GnuWin32


20

В окнах [ Подобный сценарий ]

Я столкнулся с той же проблемой, но это было во время запроса на запрос подписи сертификата.

Я сделал ниже, это сработало для меня.

После установки OpenSSL, запускайте командную строку от имени администратора после перезагрузки системы. [В лучшем случае я выполнял обе операции .. запускался как администратор и перезагрузка системы]

сделал, 1. [Случай ошибки]

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

ВНИМАНИЕ: не удается открыть файл конфигурации: C: \ OpenSSL-Win64 \ bin \ openssl.cnf И Невозможно загрузить информацию о конфигурации из C: \ OpenSSL-Win64 \ bin \ openssl.cnf

2. [Работал с предупреждением]

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

[Предупреждающее сообщение]: ВНИМАНИЕ: не удается открыть файл конфигурации: C: \ OpenSSL-Win64 \ bin \ openssl.cnf

Но побудило меня за фразы Pass для server.key Он работал для меня.

Я сослался на эту ссылку для моей помощи.

Спасибо.


Спасибо, ссылка, которую вы предоставили, мне очень помогла: akadia.com/services/ssh_test_certificate.html
leole

15

Только вещь , которая работала для меня в этой ситуации была самостоятельно создана 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

Надеюсь, это поможет.


1
Перепробовав любое другое решение, перечисленное здесь, это сработало для меня. После того, как конфиг создан (в каталоге openssl.exe), вы можете запуститьopenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
Jimbo

12

После установки OpenSSL вам необходимо перезагрузить компьютер и использовать Run As Administrator. Тогда его работы.


11

С помощью инструментов GnuWin32 я нашел файл openssl.cnf в C: \ gnuwin32 \ share

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

9

Для меня в Windows 8 я просто нашел файл openssl.cnf и скопировал его на диск C. затем:

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

Работал отлично.



4

В моем случае мне нужно вручную указать путь к файлу openssl.cnf в команде с помощью configопции. Итак, команда

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 , настройте эту переменную среды:

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

Перед выполнением этой команды с «server.key» , успешно создайте «server.csr» :

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

1

На основной вопрос о том, почему openssl не найден: Краткий ответ: Некоторые установочные пакеты для openssl имеют предварительно включенный openssl.cnf по умолчанию. Других пакетов нет. В последнем случае вы включите один по ссылке, показанной ниже; При необходимости вы можете ввести дополнительные пользовательские особенности - имя и т. Д.

Из https://www.openssl.org/docs/manmaster/man5/config.html, я цитирую прямо:

"OPENSSL БИБЛИОТЕЧНАЯ КОНФИГУРАЦИЯ

Приложения могут автоматически настраивать определенные аспекты OpenSSL, используя основной файл конфигурации OpenSSL или, опционально, альтернативный файл конфигурации. Утилита openssl включает эту функцию: любая подкоманда использует основной файл конфигурации OpenSSL, если в подкоманде не используется опция для использования альтернативного файла конфигурации.

Чтобы включить настройку библиотеки, раздел по умолчанию должен содержать соответствующую строку, которая указывает на основной раздел конфигурации. По умолчанию используется имя openssl_conf, которое используется утилитой openssl. Другие приложения могут использовать альтернативное имя, например myapplication_conf. Все строки конфигурации библиотеки отображаются в разделе по умолчанию в начале файла конфигурации.

Раздел конфигурации должен состоять из набора пар имя-значение, которые содержат конкретную информацию о конфигурации модуля. Имя представляет собой имя модуля конфигурации. Значение значения зависит от модуля: оно может, например, представлять дополнительный раздел конфигурации, содержащий информацию, специфичную для модуля конфигурации. Например:"

Таким образом, кажется, что вы должны самостоятельно настроить openssl.cnf в соответствии с вашим отличительным именем (DN) вместе с другими записями, специфичными для вашего использования.

Вот файл шаблона, из которого вы можете сгенерировать openssl.cnf с вашими конкретными записями.

Одно приложение самом деле имеет демонстрационную установку, которая включает демонстрационный файл .cnf.

Кроме того, если вам нужен программный доступ к файлам .cnf, вы можете включить соответствующие заголовки --openssl / conf.h-- и проанализировать файлы .cnf, используя

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

Вот документы для "CONF_modules_load_file";


0

Для меня положить переменную перед вызовом сделал свое дело:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.