Неможливо завантажити конфігураційну інформацію з /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

Відповіді:


170

Після установки OpenSSL мені потрібно було створити нову змінну середовища:

  • Ім'я: OPENSSL_CONF
  • Значення: C:\Program Files\OpenSSL\openssl.cnf

У повноваженнях:

$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-
бітових

13
Або C:\Program Files (x86)\Git\ssl\openssl.cfgдля тих, хто вже з git.
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 після встановлення залишається лише файл . Але з цим файлом, здається, все одно працює.
vanje

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 не потрібно перезавантажувати та не запускати в режимі адміністратора, а натомість встановити configssl config так:

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

Звичайно, якщо ви користуєтесь GnuWin32


20

У Windows, [ Подібний сценарій ]

Я зіткнувся з тією ж проблемою, але це було під час подання запиту на отримання підпису на сертифікат.

Я зробив нижче, це працювало для мене.

Після встановлення OpenSSL командний рядок Ran як адміністратор після перезавантаження системи. [Найкраще, що я зробив як .., запустіть як адміністратор і перезавантаження системи]

зробив, 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

Але запропонував мені пройти фразу для сервера.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
Джимбо

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. Інших пакетів немає. В останньому випадку ви включите один із посилання, показаного нижче; Ви можете ввести додаткові специфіки для користувача - ім'я DN тощо тощо за потребою.

З https://www.openssl.org/docs/manmaster/man5/config.html, я цитую безпосередньо:

"ВІДКРИТТЯ БІБЛІОТЕЧНОЇ КОНФІГУРАЦІЇ

Програми можуть автоматично налаштувати певні аспекти OpenSSL, використовуючи головний файл конфігурації OpenSSL або, можливо, альтернативний файл конфігурації. Утиліта openssl включає в себе цю функціональність: будь-яка під команда використовує головний файл конфігурації OpenSSL, якщо в команді sub не використовується параметр для використання альтернативного файлу конфігурації.

Для включення конфігурації бібліотеки розділ за замовчуванням повинен містити відповідний рядок, який вказує на основний розділ конфігурації. Ім'я за замовчуванням - 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

0

У Windows Powershell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.