Programing

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

lottogame 2020. 11. 1. 17:11
반응형

국가 / 일반 이름 프롬프트를 건너 뛰는 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)를 지정하는 혼합 방식이 가능하다고 생각하는 것이 직관적 일 수 있습니다 . 그러나 그것은 작동하지 않습니다.

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

  • put C, ST, L, O and OU in the openssl.cnf section req_distinguished_name and
  • ran openssl req with -subj=/CN=www.mydom.com.

openssl complained that mandatory Country Name field is missing and the generated certificate just had CN in the subject line. Seems like -subj option completely overrides the subject line and does not allow updating a single field.

This makes all following three approaches of supplying subject fields exclusive to each other:

  • Prompts
  • config file
  • -subj option

참고URL : https://stackoverflow.com/questions/8075274/is-it-possible-making-openssl-skipping-the-country-common-name-prompts

반응형