Невозможно загрузить информацию о конфигурации из /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в ваш путь.

lame_coder
источник
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" ...
zombi_man
источник
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

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

simhumileco
источник
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
TL
источник
9

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

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

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

Али
источник
6

В Windows 7 мне не пришлось перезагружаться, просто запустите командную строку в режиме администратора.

Калгари Либертарианец
источник
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
5ervant
источник
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";

loveofthecode
источник
0

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

OPENSSL_CONF=/usr/ssl/openssl.cnf openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365
VoloshinS
источник
0

В Windows Powershell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
кузнец
источник