OpenSSL 및 openssl.conf 파일 읽기 오류


119

Windows XP 32 비트를 실행 중입니다.

방금 다음 URL에서 Openssl을 다운로드하여 설치했습니다. 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

하지만 이제 명령 프롬프트에서 다음 오류가 발생합니다.

C : \ OpenSSL \ bin \ openssl.conf의 라인 -1에
오류가 있습니다. 4220 : error : 02001002 : system library : fopen : No such file or directory :. \ crypto \ bio \ bss_file.c : 126 : fopen ( 'C : \ OpenSSL \ bin \ openssl.conf ','rb ') 4220 : error : 2006D080 : BIO routines : BIO_new_file : no such file :. \ crypto \ bio \ bss_file.c : 129 :
4220 : error : 0E078072 : configuration file routines : DEF_LOAD : 해당 파일 없음 :. \ crypto \ conf \ conf_def.c : 197 :

도와주세요. 미리 감사드립니다.


3
정확한 파일 이름 확인 : openssl.conf ---> openssl.cnf
Mark

2
Windows의 파일 확장자는 이제 .cfg입니다. 또한 지정된 파일 경로 (명령 줄 또는 환경 변수 OPENSSL_CONF)가 따옴표 안에 있지 않은지 확인하십시오.
tatx

파일 확장자 (.cnf / .cfg)는 OpenSSL을 설치하는 데 사용 된 항목에 따라 달라집니다. WampServer v3.2.2 설치에서 구성 파일 이름은 openssl.cnf였습니다. 또한 Shining Path Productions의 바이너리를 사용하여 Window10 64 비트 설치를 수행했습니다. 해당 설치의 파일 이름은 openssl.cfg입니다. OpenSSL 구성 파일 확장자 이름의 이러한 차이는 컴파일에 따라 달라집니다. OpenSSL v1.1.1g에서 인식하는 확장 이름을 아직 테스트하지 않았습니다.
Bill Vallance

답변:


141

Windows에서는 환경 속성을 설정할 수도 있습니다 OPENSSL_CONF. 예를 들어 명령 줄에서 다음을 입력 할 수 있습니다.

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

이를 확인하려면 다음을 입력하십시오.

echo %OPENSSL_CONF%

또한 모든 사용자와 서비스에서 기본적으로 사용할 수 있도록 컴퓨터 환경 변수의 일부로 설정할 수도 있습니다. 예를 들어 Windows NT의 환경 변수Windows XP에서 환경 변수를 관리하는 방법을 참조하십시오 .

이제 구성 위치 매개 변수를 전달하지 않고도 openssl 명령을 실행할 수 있습니다.


9
고마워, 나를 위해 일했다! (set OPENSSL_CONF = c : \ openssl-win32 \ bin \ openssl.cfg)
Valentin Heinitz 2014

@jww가 이것을 시도했지만 세트가 잘못된 명령임을 알려줍니다. 어떤 아이디어?
Sarah

3
@Sarah- set는 Windows 명령이며 cmd.exe. Windows가 아닌 컴퓨터에서는 작동하지 않습니다. setecho것은 중, 파워 쉘에서 작동하지 않습니다. 당신은 같은 것을 사용할 것 $X=1; Write-Output $X입니다.
jww

@jww 감사합니다. 나는 Windows 컴퓨터에 있지만 cmd.exe 대신 openssl.exe에서 해당 명령을 사용하고있었습니다. 귀하의 의견을 읽고 cmd.exe로 이동하여 대신 set 명령을 입력했습니다. 제대로 작동했지만 openssl.exe에서 "Unable to load config info from wrong_path / ssl / openssl.cnf"라는 동일한 오류가 계속 발생하므로 아래 솔루션을 통해 openssl 디렉토리에 매개 변수 -config를 추가해 보았습니다. 완벽하게 작동했습니다. 그래서 행복합니다. 도움을 주셔서 감사합니다 :)
Sarah

답변으로 표시되어야합니다. 솔직히도 불필요해야합니다. 이 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 -config가 man openssl에 나열되지 않는 이유는 무엇입니까? openssl.org/docs/apps/openssl.html
barlop

@nneonneo는 이것을 시도하고 위의 솔루션을 시도했지만 set 및 config가 잘못된 명령이라고 말합니다. 어떤 아이디어?
Sarah

설정은 Windows에서만 작동합니다. config는 독립적 인 명령이 아닙니다 (OpenSSL 명령 줄에 추가).
nneonneo

29

4 단계에서 다음과 같이 openssl.cnf 파일을 직접 만드십시오. http://www.flatmtn.com/article/setting-openssl-create-certificates

링크 작동중지 된 후 편집 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을 찾을 수 없음
Greg Domjan

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

올바른 확장자 ( cnf가 아닌 openssl.cfg )를 관리하십시오!

여기에서 OpenSSL을 설치했습니다 : http://slproweb.com/products/Win32OpenSSL.html


설치 링크가 도움이되었고 다른 곳에서 0.9.8을 다운로드했지만 작동하지 않았습니다. 감사합니다.
EpicPandaForce 2014 년

14

OpenSSL과 함께 Apache를 설치 한 경우 bin 디렉토리로 이동하십시오. 제 경우에는 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

* 이렇게하면 개발 목적으로 사용할 수있는 자체 서명 된 인증서가 생성됩니다.

httpd.conf 스틱에 Apache가 설치되어 있다면 다음을 수행하십시오.

  <IfModule ssl_module>
    SSLEngine on
    SSLCertificateFile "D:/apache/conf/server.crt"
    SSLCertificateKeyFile "D:/apache/conf/server.key"
  </IfModule>

질문을 한 동료는 그가 Win32OpenSSL을 사용하고 있다고 분명히 말했습니다. Apache 제품은 어디에서 왔습니까? 질문과 어떤 관련이 있습니까?
jww

3
물론 별도로 제공되는 OpenSSL을 설치하거나 Apache와 함께 설치하는 것은 동일합니다. 95 %의 경우 Windows에 OpenSSL을 설치하는 이유는 Apache와 함께 사용되기 때문에 Apache 비트를 추가했습니다.
아르투르 Kędzior

XAMPP는 Apache 폴더 내부에 OpenSSL을 포함하기 때문에 유용합니다.
Jimmy Adaro

매력처럼 작동합니다!
Divyesh Prajapati

12

관리자 권한으로 openssl.exe를 실행 해보십시오.


2
이 명령을 작동시키기 위해 관리자로 실행할 필요는 없습니다. 근본적인 문제를 해결하는 것이 좋습니다.
jww

시스템 드라이브의 프로그램 파일 디렉터리에 설치된 경우 상승 된 권한으로 명령을 실행해야하며 그렇지 않으면 쓰기 권한이 없습니다.
CodeManX 2014 년

1
이것은 나를 위해 일했습니다. 액세스를 시도한 이유를 모르고 C:\Program Files\Common Files\SSL/openssl.cnf갑자기 관리자로 실행될 때 갑자기 찾을 수 없었고 파일을 만들지 않았는지 신경 쓰지 않았지만 이것은 나를 위해 일 했으므로 상관하지 않습니다. 어느 한 쪽.
Simon_Weaver

7

Apache for windows bin 폴더에서 openssl.exe를 사용하여 비슷한 오류가 발생했습니다. 나는 openssl.cnf 파일의 경로에 오타가있는 -config 플래그를 지정했습니다. 나는 당신이 그것을 찾을 것이라고 생각합니다

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

참고 : conf 는 아마도 cnf 여야합니다 .


4

openssl 설치가 성공하면 c 드라이브에서 "OPENSSL"을 검색하여 구성 파일을 찾고 경로를 설정합니다.

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 바이너리를 다운로드 한 후 OpenSSL이라는 폴더의 C 드라이브에 압축을 풉니 다. (경로는 C : \ OpenSSL이어야합니다). 폴더 내용을 이동하지 말고 폴더에 압축을 풉니 다.
  4. OpenSSL을 사용할 준비가되었습니다. 이것은 권한이 필요하지 않기 때문에 설치할 권한이없는 Windows 사용자를위한 훌륭한 해결 방법입니다. 이전의 bat 파일을 두 번 클릭하여 실행하십시오.

2

여기서 문제는 GnuWin32 openssl 항목과 함께 제공된 openssl.cnf 파일이 없다는 것입니다. 당신은 그것을 만들어야합니다. 여기에서 openssl.cnf 파일을 만드는 방법을 찾을 수 있습니다.

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

수행 방법에 대한 모든 정보를 제공합니다.

참고 : 끝에 백 슬래시가있는 openssl 명령은 UNIX 용입니다. Windows의 경우 : 1) 백 슬래시를 제거하고 2) 두 번째 줄을 위로 이동하여 첫 번째 줄의 끝이되도록합니다. (따라서 하나의 명령 만 얻습니다.)

또한 : 주석을 읽는 것이 매우 중요합니다. 이를 기반으로 변경하고 싶은 몇 가지가 있습니다.


2

Windows에서 동일한 문제가 발생했습니다. 다음과 같이 환경 변수를 설정하여 해결되었습니다.

변수 이름 : OPENSSL_CONF 변수 값 : C : (OpenSSl 디렉토리) \ bin \ openssl.cnf


1

다음과 같은 오류가 표시되는 경우

라인 -1 c : apacheconfopenssl.cnf 오류

-config에서 백 슬래시에서 앞 슬래시로 변경해보십시오.



0

관리자로 명령을 실행하고 읽기 권한이있는 위치에 구성 파일을 복사하고 -config 매개 변수로 경로를 지정하십시오.


0

나는 이것이 오래되었다는 것을 알고 있지만 이것에 대해 (그리고 Visual Studio를 사용하는) 다른 사람들이 도움이 될 것이라고 생각했습니다. 나는 내가 찾을 수없는 다른 포스트에서 이것을 읽었다.

notepad ++에서 구성을 열고 인코딩이 UTF-8 (즉, UTF-8-BOM *이 아님)인지 확인합니다.

이것은 나에게 많은 검색 / 시행 오류를 구할 수 있었을 것입니다 ...


0

나는이 질문이 오래되었다는 것을 알고 있지만 여기에 내가 어떻게 해결했는지가 있습니다.

디렉토리 의 openssl.cnf파일을 대신에 잘 작동 bin하는 상위 디렉토리로 복사 했습니다.C:/Openssl/openssl.cnfC:/Openssl/bin/openssl.cnf

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.