[openssl] 국가 / 일반 이름 프롬프트를 건너 뛰는 openssl을 만들 수 있습니까?

다음과 같은 프롬프트를 건너 뛰는 openssl을 만드는 방법이 있습니까?

Country Name (2 letter code) [US]:
Organization Name (eg, company) [My Company Name LTD.]:
Common Name (eg, YOUR name) [something]:

인증서를 만드는 동안

openssl req -config openssl.cnf -new -x509 ...

해당 매개 변수가 openssl.cnf파일에 제공된다는 사실을 고려하면

예 :

countryName         = Country Name (2 letter code)
countryName_default     = US
countryName_min     = 2
countryName_max     = 2
0.organizationName      = Organization Name (eg, company)
0.organizationName_default  = My Company Name LTD.
commonName          = Common Name (eg, YOUR name)
commonName_max      = 64
commonName_default      = ${ENV::CN}



답변

@indiv 덕분에

가이드 에 따르면 -subj, 예를 들어

-subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'


답변

또 다른 솔루션은 구성 파일에서 prompt지시문을 사용하는 것입니다.
참조 OpenSSL을 : 구성 파일 형식

prompt

값으로 설정 no하면 인증서 필드 프롬프트가 비활성화되고 구성 파일에서 직접 값을 가져옵니다. 또한 distinguished_nameattributes섹션 의 예상 형식을 변경합니다 .

distinguished nameattribute섹션 에는 두 가지 형식이 있습니다.

프롬프트 옵션이로 설정된 no경우 이러한 섹션은 필드 이름과 값으로 만 구성됩니다 . 예 :

 CN=My Name
 OU=My Organization
 emailAddress=someone@somewhere.org

이를 통해 외부 프로그램 (예 : GUI 기반)이 모든 필드 이름과 값이 포함 된 템플릿 파일을 생성하고 req.

또는 프롬프트 옵션이 없거나 no로 설정되지 않은 경우 파일에 필드 프롬프트 정보가 포함됩니다. 다음과 같은 형식의 행으로 구성됩니다.

 fieldName="prompt"
 fieldName_default="default field value"
 fieldName_min= 2
 fieldName_max= 4


답변

구성 파일을 생성하고 [req] 섹션에 prompt = no를 입력 할 수 있습니다.

예를 들면 :

[req]
prompt = no
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
C = US
ST = California
L = Los Angeles
O = Our Company Llc
#OU = Org Unit Name
CN = Our Company Llc
#emailAddress = info@example.com

[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com

그런 다음 예를 실행하십시오.

openssl req -new -sha256 -config THATFILE.conf -key example.com.key -out example.com.csr


답변

혼합 접근 방식은 지원되지 않습니다.

openssl.cnf에 일부 정적 필드를 넣고 -subj옵션을 통해 일부 (CN)를 지정하는 혼합 방식이 가능하다고 생각하는 것이 직관적 일 수 있습니다 . 그러나 그것은 작동하지 않습니다.

나는 시나리오를 테스트했습니다.

  • openssl.cnf 섹션에 C, ST, L, O 및 OU를 입력
    req_distinguished_name하고
  • openssl req와 함께 실행 되었습니다
    -subj=/CN=www.mydom.com.

openssl은 필수 국가 이름 필드가 누락되었으며 생성 된 인증서의 제목 줄에 CN이 있다고 불평했습니다. -subj옵션이 제목 줄을 완전히 무시하고 단일 필드 업데이트를 허용하지 않는 것 같습니다 .

이것은 서로 배타적 인 주제 필드를 제공하는 다음 세 가지 접근 방식을 모두 만듭니다.

  • 프롬프트
  • 구성 파일
  • -subj 선택권


답변

-batch선택적 매개 변수는 발생 openssl req정보 필드의를 묻는 메시지가 표시되지 명령을. 자체 서명 된 인증서의 자동화를 위해 구성 파일없이 이런 방식으로 사용합니다.

도움말에 나열되어 있습니다.

openssl help req
...
...
-batch              Do not ask anything during request generation


답변