[windows] OpenSSL 및 openssl.conf 파일 읽기 오류

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 :

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



답변

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

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

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

echo %OPENSSL_CONF%

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

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


답변

명령 줄에 매개 변수를 추가 하여 실제 설치된 경로로 -config c:\your_openssl_path\openssl.cfg변경 your_openssl_path하십시오.


답변

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


답변

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

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

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


답변

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>


답변

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


답변

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 여야합니다 .