OpenSSL 구성 파일에서 기본 디렉터리가 작동하지 않습니다.

OpenSSL 구성 파일에서 기본 디렉터리가 작동하지 않습니다.

/etc/ssl/openssl.cnf 파일에 디렉토리를 설정했지만 명령을 실행할 때마다

openssl req -x509 -newkey rsa:4096 -keyout cakey.pem -out cacert.pem -days 3650

내가 작업 중인 디렉토리의 루트에 파일을 배치합니다.

[ CA_default ]

dir     = /home/will/myCA   # Where everything is kept
certs       = $dir/certs        # Where the issued certs are kept
crl_dir     = $dir/crl      # Where the issued crl are kept
database    = $dir/index.txt    # database index file.
#unique_subject = no            # Set to 'no' to allow creation of
                    # several certs with same subject.
new_certs_dir   = $dir/newcerts     # default place for new certs.

certificate = $dir/cacert.pem   # The CA certificate
serial      = $dir/serial       # The current serial number
crlnumber   = $dir/crlnumber    # the current crl number
                    # must be commented out to leave a V1 CRL
crl     = $dir/crl.pem      # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE    = $dir/private/.rand    # private random number file

x509_extensions = usr_cert      # The extensions to add to the cert

# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt    = ca_default        # Subject Name options
cert_opt    = ca_default        # Certificate field options

# Extension copying option: use with caution.
# copy_extensions = copy

# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions    = crl_ext

default_days    = 365           # how long to certify for
default_crl_days= 30            # how long before next CRL
default_md  = default       # use public key default MD
preserve    = no            # keep passed DN ordering

# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy      = policy_match

디렉토리가 제대로 작동한다면 나는 이것을 예상해야합니다

Generating a 2048 bit RSA private key
.................................+++
.................................................................................................+++
writing new private key to '/home/will/myCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----

"/home/will/myCA/private/cakey.pem"에 새 개인 키를 씁니다.

이제 /etc/local/ssl 아래에 설치된 바이너리를 사용하여 웹 사이트에서 직접 OpenSSL 버전을 업그레이드했습니다. 불행하게도 OpenSSL을 사용하여 생성한 파일이 폴더/디렉토리로 정렬되지 않는 이유를 아직도 이해하지 못합니다.

기본 디렉토리가 작동하지 않는 이유를 아는 사람이 있습니까?

매우 감사합니다

~ 할 것이다

업데이트 날짜: 2019년 5월 30일 11:00

나는 명령을 실행했다

openssl req -x509 -newkey rsa:4096 -days 3650

그러나 터미널 창 내에서 키를 인쇄할 뿐 파일로 출력하지는 않습니다.

명령에 -noout을 추가했지만 파일이 저장되었으며, openssl.cnf 파일 /home/will/demoCA에 설정한 디렉터리 대신 ~privkey.pem에 저장되었습니다.

터미널이 열린 작업 디렉터리에 파일이 저장되어 있는 것을 확인했습니다.

이 명령을 사용하여 openssl version -d디렉터리를 설정한 구성 파일의 기본 위치를 표시합니다.OPENSSLDIR: "/usr/local/ssl"

답변1

가리키는 파일은 [ CA_defaults ]명령에 의해 내부적으로 사용됩니다 openssl ca.

내부를 살펴보면 new_certs_dir이 명령을 사용할 때 CA에서 서명한 모든 인증서가 표시되며 openssl ca파일 이름에는 인증서 일련 번호가 추가되어 구성됩니다 .pem.

이러한 파일은 사용할 때 openssl req사용되지 않습니다 .

명령에 대한 매뉴얼 페이지에는 req다음과 같이 나와 있습니다.

- 출력 파일 이름

기본적으로 이는 기록할 출력 파일 이름 또는 표준 출력을 지정합니다.

따라서 명령이 실행되는 디렉터리에 있는 지정된 파일 이름에 쓰거나 표준 출력에 쓰게 됩니다.

-키아웃 파일 이름

이는 새로 생성된 개인 키가 기록될 파일 이름을 제공합니다. 이 옵션을 지정하지 않으면 구성 파일에 있는 파일 이름이 사용됩니다.

default_keyfile그러면 명령을 실행한 디렉터리에 있는 지정된 파일 이름에 쓰거나 옵션에 지정된 파일 이름 에 쓰게 됩니다 ( [ req ]물론 아래).

두 경우 모두 현재 디렉터리에 파일을 배치하지 않으려면 명령에 파일의 절대 경로를 제공할 수 있습니다.


파일에서 구성한 구조는 .conf명령을 사용하여 하위(CA 또는 최종 엔터티)의 요청에 서명할 때 작동합니다. openssl ca그러나 인증서에 서명할 수 있는 단계로 이동하려면 CA 인증서와 키가 필요합니다. 귀하의 openssl req명령으로 이러한 항목이 생성됩니다. CA 인증서에서 합리적인 값을 얻으려면 .conf파일에 더 많은 콘텐츠를 추가해야 합니다.

다음과 같은 내용을 시작하면 됩니다.

[ req ]

# Don't prompt for the DN, use configured values instead
# This saves having to type in your DN each time.

prompt             = no
string_mask        = default
distinguished_name = req_dn

# The size of the keys in bits:
default_bits       = 4096

[ req_dn ]

countryName            = GB
stateOrProvinceName    = Somewhere
organizationName       = Example
organizationalUnitName = PKI
commonName             = Example Test Root CA

[ ca_ext ]

# Extensions added to the request

basicConstraints =  critical, CA:TRUE
keyUsage =          critical, keyCertSign, cRLSign

이전 명령을 약간 수정한 버전을 사용하여 CA 인증서를 만듭니다.

openssl req -x509 -newkey rsa:4096 -keyout /home/will/myCA/private/cakey.pem -out /home/will/myCA/cacert.pem -days 3650 -nodes -config <path-to>/openssl.cnf -extensions ca_ext

-config참고: 이 옵션은 기본 구성 파일을 사용/편집하지 않는 경우에만 필요합니다.

모든 것이 정상이면 위 CA 구성에 대한 올바른 인증서와 키를 갖게 됩니다. 이 명령을 사용하여 인증서에 서명하기 전에 인증서 가 존재하고 초기 일련 번호(예: )로 생성되었는지 openssl ca확인해야 합니다 .index.txtserial01

OpenSSL은 암호화의 스위스 군용 칼이므로 다양한 옵션이 있습니다. 불행히도 매뉴얼 페이지를 읽는 것이 이를 이해하는 유일한 방법입니다.

관련 정보