Windows의 /usr/local/ssl/openssl.cnf에서 구성 정보를로드 할 수 없습니다


184

Windows에서 OpenSSL을 사용하는 동안 :

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

Powershell에서 :

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

이 값은 이전 설치 버전과 다릅니다 (이 게시물의 이전 편집에서 볼 수 있음). 또한 openssl 바이너리 폴더 ${env:ProgramFiles}\OpenSSL를 Path 에 추가하는 것을 잊지 마십시오 .


16
버전 1.0.1j에서는 C:\OpenSSL-Win32\bin\openssl.cfg대신 사용해야 했습니다.
Kevin Panko

7
또는 C :이 64bit 시스템의 \ OpenSSL을-Win64를 \ 빈 \ openssl.cfg
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 디렉토리에 존재하는가. 그러나이 파일을 사용하면 어쨌든 작동하는 것 같습니다.
vanje

9
Git과 함께 제공되는 OpenSSL을 사용하는 경우 시도 할 수 있습니다-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B

2
openssl : 오류 : '-config'는 잘못된 명령입니다. 어떻게 설정합니까?
benez December

1
@kewlbfy @Kosar가 -config국기 를 어디에 사용할지 아래 답변을 참조하십시오 . 이것은 나를 위해 일했습니다
danjah

36

Windows 10에서는 관리자 모드에서 다시 시작하거나 실행할 필요가 없지만 openssl 구성을 다음과 같이 설정하십시오.

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

물론 사용하고 있다면 GnuWin32


20

Windows에서 [ 유사한 시나리오 ]

같은 문제에 직면했지만 인증서 서명 요청을 요청하는 중이었습니다.

나는 아래를했다, 그것은 나를 위해 일했다.

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

하지만 저를 묻는 메시지가 전달 구 그것은은 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 도구를 사용하여 C : \ gnuwin32 \ share에서 openssl.cnf를 찾았습니다.

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

완벽하게 작동했습니다.


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

1

openssl을 찾을 수없는 이유에 대한 기본 질문 : 간단한 답변 : openssl의 일부 설치 패키지에는 기본 openssl.cnf가 사전 포함되어 있습니다. 다른 패키지는 그렇지 않습니다. 후자의 경우 아래 표시된 링크 중 하나를 포함합니다. 필요에 따라 추가 사용자 별 정보 (DN 이름 등)를 입력 할 수 있습니다.

에서 https://www.openssl.org/docs/manmaster/man5/config.html,I 직접 인용 :

"OPENSSL 라이브러리 구성

응용 프로그램은 마스터 OpenSSL 구성 파일 또는 선택적으로 대체 구성 파일을 사용하여 OpenSSL의 특정 측면을 자동으로 구성 할 수 있습니다. openssl 유틸리티에는이 기능이 포함되어 있습니다. 대체 구성 파일을 사용하기 위해 하위 명령에 옵션을 사용하지 않는 한 모든 하위 명령은 마스터 OpenSSL 구성 파일을 사용합니다.

라이브러리 구성을 사용하려면 기본 섹션에 기본 구성 섹션을 가리키는 적절한 행이 있어야합니다. 기본 이름은 openssl 유틸리티에서 사용하는 openssl_conf입니다. 다른 응용 프로그램은 myapplication_conf와 같은 대체 이름을 사용할 수 있습니다. 모든 라이브러리 구성 행은 구성 파일 시작시 기본 섹션에 나타납니다.

구성 섹션은 특정 모듈 구성 정보를 포함하는 이름 값 쌍 세트로 구성되어야합니다. 이름은 구성 모듈의 이름을 나타냅니다. 이 값의 의미는 모듈마다 다릅니다. 예를 들어 구성 모듈 특정 정보가 포함 된 추가 구성 섹션을 나타낼 수 있습니다. 예 : "

따라서 DN (Distinguished Name)에 따라 openssl.cnf를 사용자 고유의 다른 항목과 함께 자체 구성해야합니다.

다음 은 특정 항목으로 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"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.