OpenSSL та помилка читання файлу openssl.conf


119

У мене працює 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

Потім після гуглінгу я колись змінив вищевказану команду на

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 \ bio \ bss_file.c: 126: fopen ('C: \ OpenSSL \ bin \ openssl.conf ',' rb ') 4220: помилка: 2006D080: BIO підпрограми: BIO_new_file: немає такого файлу:. \ Crypto \ bio \ bss_file.c: 129:
4220: помилка: 0E078072: конфігураційний файл підпрограм. : DEF_LOAD: такого файлу немає:. \ Crypto \ conf \ conf_def.c: 197:

Будь ласка, допоможіть. Заздалегідь спасибі.


3
перевірити точне ім'я файлу: openssl.conf ---> openssl.cnf
Марк

2
розширення файлу в Windows зараз .cfg. Також переконайтеся, що вказаний шлях до файлу (в командному рядку або в змінній середовища OPENSSL_CONF) не міститься в лапках.
tatx

Розширення файлу (.cnf / .cfg), схоже, змінюється залежно від того, що було використано для встановлення OpenSSL. На установці WampServer v3.2.2 я щойно зробив назву файла конфігурації openssl.cnf. Я також зробив 64-розрядну установку Window10 за допомогою двійкових файлів від Shining Path Productions. Ім'я файлу в цій установці було openssl.cfg. Ця різниця в іменах розширень файлів конфігурації OpenSSL, схоже, залежить від компіляції. Я ще не перевіряв, яке ім'я розширення розпізнається OpenSSL v1.1.1g.
Білл Валанс

Відповіді:


141

У Windows також можна встановити властивість середовища OPENSSL_CONF. Наприклад, з командного рядка ви можете ввести:

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

щоб підтвердити його, ви можете ввести:

echo %OPENSSL_CONF%

Ви також можете встановити його як частину екологічних змінних комп'ютера, щоб усі користувачі та сервіси були доступними за замовчуванням. Дивіться, наприклад, Змінні середовища в Windows NT та Як керувати змінними середовища в Windows XP .

Тепер ви можете запускати команди openssl без необхідності передавати параметр розташування конфігурації.


9
Дякую, працювали для мене! (встановити OPENSSL_CONF = c: \ openssl-win32 \ bin \ openssl.cfg)
Валентин Хайніц

@jww спробував це, але це говорить мені, що встановлена ​​команда є недійсною. якісь ідеї?
Сара

3
@Sarah - setце команда Windows, і її призначено для запуску з cmd.exe. Він не працюватиме на машині, що не працює під керуванням Windows. setІ echoріч не працює в Power Shell, або. Ви б використовували щось подібне $X=1; Write-Output $X.
jww

@jww дякую. Я на машині Windows, але я використовував цю команду в openssl.exe замість cmd.exe .. Я прочитав ваш коментар і перейшов до cmd.exe і набрав на нього команду set. Це працювало правильно, але я все одно отримував ту ж помилку в openssl.exe, кажучи: "Не вдається завантажити інформацію конфігурації з неправильної_пат / ssl / openssl.cnf", тому я спробував рішення нижче, сказавши, щоб додати параметр -config до каталогу openssl і що працювало ідеально. тому я щасливий. дякую за допомогу :)
Сара

Слід позначити як відповідь. Чесно кажучи, теж має бути непотрібним. Чому цей дистрибутив OpenSSL для Windows не є простим, наприклад, PWD?
stonedauwg

40

Просто додайте до командного рядка параметр -config c:\your_openssl_path\openssl.cfg, змінюючи your_openssl_pathреальний встановлений шлях.


чудово, слідкуючи за цим повідомленням у блозі ajden.towfeek.se/post/… та додаючи -config працює і для cygwin, наприклад $ openssl ca -in server.csr -config /etc/ssl/openssl.cnf . openssl.org/docs/apps/openssl.html
барлоп

@nneonneo спробував це та вищезазначене рішення, але він говорить мені, що встановити та конфігувати - це недійсні команди. якісь ідеї?
Сара

набір працює лише в Windows; config не є незалежною командою (ви додаєте її до свого командного рядка OpenSSL).
nneonneo

29

Просто створіть файл openssl.cnf самостійно таким чином на кроці 4: http://www.flatmtn.com/article/setting-openssl-create-certificate

Змінити після того, як посилання перестало працювати Вміст файлу 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
URL-адреси більше не знайдено
Грег Дом’ян

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

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

Я встановив OpenSSL звідси: http://slproweb.com/products/Win32OpenSSL.html


Посилання на встановлення допомогло, я завантажив 0.9.8 з іншого місця і він не працював. Дякую.
EpicPandaForce

14

Якщо ви встановили Apache з OpenSSL, перейдіть до каталогу бін. У моєму випадку 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>

Співробітник, який задав питання, чітко заявив, що він використовує Win32OpenSSL. Звідки взялися речі з Apache? Наскільки це стосується питання?
jww

3
Звичайно, це встановлення OpenSSL, що постачається окремо або з Apache, - це те саме. Я додав біт Apache, тому що в 95% випадків причина встановлення OpenSSL в Windows полягає в тому, що він буде використовуватися з Apache.
Артур Кендзьор

Це корисно, оскільки XAMPP включає OpenSSL всередині папки Apache.
Джиммі Адаро

Працює як шарм!
Дівіеш Праджапаті

12

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


2
Не потрібно запускати ці команди як адміністратор, щоб змусити їх працювати. Краще виправити основну проблему.
jww

Якщо він встановлений у каталозі програмних файлів на системному диску, потрібно виконати команду з підвищеними правами, інакше у вас немає дозволу на запис.
CodeManX

1
Це працювало для мене. Я не знаю, чому він намагався отримати доступ, C:\Program Files\Common Files\SSL/openssl.cnfа потім, коли він працював як адміністратор, раптом це не хвилювало, він не міг його знайти (а також не створив файл), але це працювало для мене, тому мені все одно або.
Simon_Weaver

7

У мене просто була подібна помилка при використанні openssl.exe з папки Ainche для Windows. У мене був вказаний прапор -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

Примітка: конф, мабуть, має бути cnf .


4

Якщо установка openssl виявилася успішною, знайдіть "OPENSSL" на c-диску, щоб знайти файл конфігурації та встановити шлях.

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

Це вийшло для мене.


3

Таке вирішення нам так допомогло на моїй роботі (технічна підтримка), ми створили простий пакетний файл, який ми могли працювати з будь-якого місця (у нас не було дозволів його встановити). Цей спосіб вирішить встановити змінну, а потім запустити 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, які не мають привілеїв встановлювати його, оскільки це не вимагає дозволів. Просто запустіть файл bat раніше, двічі клацнувши його.

2

Проблема тут полягає в тому, що тут НЕ є файл openssl.cnf, наданий з GnuWin32 openssl. Ви повинні створити його. Як дізнатися, як створити файл openssl.cnf, перейдіть сюди:

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

Де це все розкладається вам про те, як це зробити.

УВАГА! Примітка. Команда openssl, подана з косою рисою в кінці, призначена для UNIX. Для Windows: 1) Зніміть зворотну косу рису, і 2) Перемістіть другу лінію вгору, щоб вона була в кінці першого рядка. (Отже, ви отримуєте лише одну команду.)

ТАКОЖ: ДУЖЕ важливо читати коментарі. Можливо, ви хочете внести деякі зміни на їх основі.


2

У мене була така ж проблема в Windows. Це було вирішено шляхом встановлення змінної середовища таким чином:

Назва змінної: OPENSSL_CONF Значення змінної: C: (OpenSSl Directory) \ bin \ openssl.cnf


1

Якщо ви бачите помилку щось подібне

помилка на рядку -1 c: apacheconfopenssl.cnf

спробуйте перейти з косою косою на передню косу рису в -конфігу.


1

https://github.com/xgqfrms-gildata/App001/isissue/3

  1. по-перше, переконайтеся, що ви маєте openssl.cnfфайл на правильному шляху;
  2. якщо ви не можете його знайти, просто завантажте його та скопіюйте його на шлях налаштування.
$ echo %OPENSSL_CONF%

$ set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cnf

OpenSSL & node.js
xgqfrms

не вдалося знайти C: \ OpenSSL \
Snehal Dwivedi

@SnehalDwivedi, будь ласка, виконайте кроки, як я описав.
xgqfrms

0

Запустіть команду як адміністратор і скопіюйте файл конфігурації кудись, де ви маєте права на читання, і вкажіть шлях за допомогою параметра -config.


0

Я знаю, що це старе, але думав, що інші, що трапляються на цьому (і використовують Visual Studio), можуть принести користь. Я читав це в іншій публікації, яку, здається, не можу знайти.

Відкрийте конфігурацію в блокноті ++ і переконайтесь, що кодування є UTF-8 (тобто не UTF-8-BOM *).

Це врятувало б мені багато пошукових / випробувальних помилок ...


0

Я знаю, що це питання давнє, але ось як я його вирішив.

Я скопіював openssl.cnfфайл із binкаталогу в батьківський каталог, який C:/Openssl/openssl.cnfзамість цього C:/Openssl/bin/openssl.cnfпрацював.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.