¿Es posible hacer que openssl se salte las indicaciones de país / nombre común?

82

¿Hay alguna manera de hacer que openssl se salte las indicaciones como

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

Al crear certificados con

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

dado el hecho de que esos parámetros se proporcionan en el openssl.cnfarchivo

p.ej

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}
Tzury Bar Yochay
fuente
3
Puede pasar esas cosas como parámetros en la línea de comando. No recuerdo la sintaxis.
indiv
1
gracias, eso funciona! -subj '/C=US/ST=Oregon/L=Portland/CN=www.madboa.com'es el camino a seguir
Tzury Bar Yochay

Respuestas:

128

gracias a @indiv

de acuerdo con esta guía -subj es el camino a seguir, por ejemplo

-subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'
Tzury Bar Yochay
fuente
de hecho, no se necesita ningún archivo de configuración de esta manera
Pat
35

Otra solución consiste en usar, en su archivo de configuración, la promptdirectiva.
Consulte OpenSsl: formato de archivo de configuración

prompt

si se establece en el valor, noesto deshabilita la solicitud de campos de certificado y solo toma valores del archivo de configuración directamente. También cambia el formato esperado de las secciones distinguished_namey attributes.

Hay dos formatos separados para las secciones distinguished namey attribute.

Si la opción de solicitud se establece en no, estas secciones solo constan de nombres de campo y valores : por ejemplo,

 CN=My Name
 OU=My Organization
 [email protected]

Esto permite que los programas externos (por ejemplo, basados ​​en GUI) generen un archivo de plantilla con todos los nombres y valores de campo y simplemente se lo pasen req.

Alternativamente, si la opción de solicitud está ausente o no se establece en no, el archivo contiene información de solicitud de campo. Consta de líneas de la forma:

 fieldName="prompt"
 fieldName_default="default field value"
 fieldName_min= 2
 fieldName_max= 4
VonC
fuente
2
Esta debería ser la respuesta aceptada. Si ya existe un archivo de configuración, no tiene sentido proporcionar las opciones / CN / O / C es el comando nuevamente.
Aditya Vikas Devarapalli
1
@AdityaVikasDevarapalli 8 años después de haber escrito esta respuesta, estoy de acuerdo. Pero soy parcial.
VonC
15

Genere un archivo de configuración y en la sección [req] puede poner prompt = no.

Por ejemplo:

[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 = [email protected]

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

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

Entonces simplemente ejecute eg

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

No se admite un enfoque mixto

Puede ser intuitivo pensar que es posible un enfoque mixto, donde puede pensar en poner algunos campos estáticos en openssl.cnf y especificar algunos (CN) a través de la -subjopción. Sin embargo, eso no funciona.

Probé un escenario donde yo

  • ponga C, ST, L, O y OU en la sección openssl.cnf req_distinguished_namey
  • corrió openssl reqcon -subj=/CN=www.mydom.com.

openssl se quejó de que faltaba el campo obligatorio Nombre de país y el certificado generado solo tenía CN en la línea de asunto. Parece que la -subjopción anula completamente la línea de asunto y no permite actualizar un solo campo.

Esto hace que los siguientes tres enfoques de proporcionar campos temáticos sean exclusivos entre sí:

  • Indicaciones
  • archivo de configuración
  • -subj opción
Mohammad Azim
fuente
Gracias por confirmar esto. Esto realmente debería marcarse como un error. Cuando lo ejecuto, -subjse ignora incluso si se especifica después -config.
Otheus
1

El -batchparámetro opcional hace que el openssl reqcomando no solicite ninguno de los campos de información. Lo uso de esta manera sin un archivo de configuración para la automatización de certificados autofirmados.

Aparece en la ayuda:

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