OpenSSL : 빈 제목 DN으로 인증서를 작성하는 방법은 무엇입니까?


14

주제 대체 이름 속성 / 확장자에서만 식별 정보를 사용하여 PKCS # 10 인증서 요청 /X.509 인증서를 작성할 수 있습니까? X.509 4.1.2.6 Subject 에 따르면 subjectAltName이 중요한 경우 주제가 CA가 아닌 인증서의 경우 제목이 비어있을 수 있습니다.

그러나이 구성 파일을 빈 distinguished_name 섹션과 함께 사용하면 :

# request.config
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:certtest@example.com

명령

openssl genrsa 1024 > key.pem
openssl req -new -key key.pem -out req.pem -config request.config

OpenSSL은 다음과 같이 불평합니다.

error, no objects specified in config file
problems making Certificate Request

답변:


11

이것은 나를 위해 일했다 :

test-no-cn.cnf 파일

[req] 
default_bits       = 4096
encrypt_key        = no
default_md         = sha256
distinguished_name = req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:certtest@example.com,URI:http://example.com/,IP:192.168.7.1,dirName:dir_sect

[dir_sect]
C=DK
O=My Example Organization
OU=My Example Unit
CN=My Example Name

CSR 생성

openssl req -new -newkey rsa:4096 -nodes -config test-no-cn.cnf -subj "/" -outform pem -out test-no-cn.csr -keyout test-no-cn.key

CSR 서명

openssl x509 -req -days 365 -in test-no-cn.csr -signkey test-no-cn.key -out test-no-cn.crt -outform der -extensions v3_req -extfile test-no-cn.cnf

결과 인증서보기

openssl x509 -inform der -in test-no-cn.crt -noout -text

8

또한이 "개체를 지정하지 않았습니다"오류가 발생했습니다. 다양한 필드에 대해 다음과 같은 프롬프트가 표시되었습니다.

US []:

그리고 나는 이미 .cnf 파일 에이 값을 설정했기 때문에 enter 키를 누르고있었습니다. 모든 값을 다시 입력해야한다는 것이 밝혀졌습니다.


나는 똑같이해야했다. 구성 파일에 값을 넣었음에도 불구하고 여전히 모든 DN 구성 요소를 다시 묻습니다. 나는 그것들을 반복해야했지만 적어도 효과가있었습니다.
Nate W.

3
구성 파일에 실제로 기본값이 포함되어 있지 않기 때문입니다. C = USC의 "프롬프트"가 기본값이 아니라 "US"임을 의미합니다. 대신, 파일을 포함해야 C = Country하고 C_default = US.
jordanbtucker

5
아, 그리고 그것은 오직 경우에 한합니다 prompt = yes [or blank]. 경우 prompt = no다음이 C = US의미 "미국은"기본 값입니다.
jordanbtucker

3

문제는 prompt = no원래 구성에 있습니다. 그 차종은 openssl req당신이 config 파일에서 대상 항목을 지정하려고하고 명중 가정 req.c에서 예비 검사를 .

해결 방법이 있습니다.를 제거 prompt = no하고 대신 명령 행에 추가 -subj /하십시오 openssl req. 다음은 CSR 및 자체 서명 인증서를 모두 생성하는 스크립트 예입니다.

cat > openssl.cnf <<EOF
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:certtest@example.com
EOF
openssl req -newkey rsa:2048 -config openssl.cnf -nodes -new -subj "/" \
  -out req.csr
openssl req -newkey rsa:2048 -config openssl.cnf -nodes -new -subj "/" \
  -x509 -out cert.crt

2

openssl 구성 파일의 정책 섹션에서 "commonName = optional"을 시도하십시오.


1

키보드의 ' "distinguished_name"그룹에서 하나의 값을 입력 한 것으로 보이며 정상적으로 작동합니다 ... 다른 값을 입력 할 필요가 없으며 기본값 (openssl.conf 파일에서 언급 한 것처럼)을 사용할 수 있습니다

[ req ]
...
distinguished_name = req_distinguished_name
prompt = no
...

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