SSL: SAN이 채워지지 않음

SSL: SAN이 채워지지 않음

자체 서명된 인증서를 만들려고 합니다.

  1. CA 개인 키 생성:openssl genrsa -out ca.key 2048
  2. CA 인증서 생성( ca.cnf아래 참조):openssl req -x509 -new -key ca.key -out ca.crt -days 10000 -config ca.cnf
  3. 서비스 개인 키 생성:openssl genrsa -out cert.key 2048
  4. CSR을 생성합니다( node.cnf아래 참조):openssl req -new -key cert.key -out cert.csr -config node.cnf
  5. 서버 인증서 생성:openssl x509 -req -in cert.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out cert.crt -days 100

그런 다음 내 SAN이 채워졌는지 확인하려고 합니다.

알겠어요:

openssl x509 -noout -ext subjectAltName -in cert.crt
No extensions in certificate

어떤 아이디어가 있나요?

ca.cnf파일은 다음과 같습니다

# OpenSSL CA configuration file
[ ca ]
default_ca = CA_default

[ CA_default ]
default_days = 365
database = index.txt
serial = serial.txt
default_md = sha256
copy_extensions = copy
unique_subject = no

# Used to create the CA certificate.
[ req ]
prompt=no
distinguished_name = distinguished_name
x509_extensions = extensions

[ distinguished_name ]
organizationName = jeusdi
commonName = cicdgitops

[ extensions ]
keyUsage = critical,digitalSignature,nonRepudiation,keyEncipherment,keyCertSign
basicConstraints = critical,CA:true,pathlen:1

# Common policy for nodes and users.
[ signing_policy ]
organizationName = supplied
commonName = optional

# Used to sign node certificates.
[ signing_node_req ]
keyUsage = critical,digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth,clientAuth

# Used to sign client certificates.
[ signing_client_req ]
keyUsage = critical,digitalSignature,keyEncipherment
extendedKeyUsage = clientAuth

node.cnf:

# OpenSSL node configuration file
[ req ]
prompt=no
distinguished_name = distinguished_name
req_extensions = extensions

[ distinguished_name ]
organizationName = jeusdi

[ extensions ]
subjectAltName = @alt_names

[alt_names]
DNS.1 = registry.localhost
DNS.2 = host.k3d.internal

답변1

그 사람을 위해OpenSSL X509다음과 같이 말해보세요:

-extfile 파일 이름
사용할 인증서 확장이 포함된 파일입니다. 지정하지 않으면 확장명이 인증서에 추가되지 않습니다.

-extfile이 옵션을 사용하여 -extensionsopenssl이 올바른 확장명을 가리키도록 할 수 있습니다 . 다음과 같이 사용할 파일 -extfile node.cnf과 부분을 알려주어야 합니다 -extensions extensions.

$ openssl x509 -req -in cert.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out cert.crt -days 100 -extfile node.cnf -extensions extensions

그러면 다음을 얻게 됩니다:

$ openssl x509 -noout -ext subjectAltName -in cert.crt
X509v3 Subject Alternative Name: 
    DNS:registry.localhost, DNS:host.k3d.internal

관련 정보