Existe-t-il un moyen de faire en sorte que openssl ignore les invites telles que
Country Name (2 letter code) [US]:
Organization Name (eg, company) [My Company Name LTD.]:
Common Name (eg, YOUR name) [something]:
Lors de la création de certificats avec
openssl req -config openssl.cnf -new -x509 ...
étant donné que ces paramètres sont fournis dans le fichier openssl.cnf
par exemple.
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}
Une autre solution consiste à utiliser, dans votre fichier de configuration, la directive Prompt
.
Voir OpenSsl: format de fichier de configuration
Prompt
s'il est défini sur la valeur
no
, cela désactive l'invite des champs de certificat et prend directement les valeurs du fichier de configuration. Il modifie également le format attendu dudistinguished_name
etattributes
sections.Il existe deux formats distincts pour le
distinguished name
etattribute
sections.Si l'option Invite est définie sur
no
, ces sections se composent simplement de noms et de valeurs de champ : par exemple,
CN=My Name
OU=My Organization
[email protected]
Cela permet aux programmes externes (par exemple basés sur une interface graphique) de générer un fichier de modèle avec tous les noms et valeurs de champ et de le transmettre à
req
.Sinon, si l'option Invite est absente ou n'est pas définie sur non, le fichier contient des informations d'invite de champ. Il se compose de lignes de la forme:
fieldName="Prompt"
fieldName_default="default field value"
fieldName_min= 2
fieldName_max= 4
Générez un fichier de configuration et dans la section [req], vous pouvez mettre Prompt = no.
Par exemple:
[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
Il suffit ensuite d'exécuter par exemple.
openssl req -new -sha256 -config THATFILE.conf -key example.com.key -out example.com.csr
ne approche mixte n'est pas prise en charge
Il peut être intuitif de penser qu'une approche mixte est possible, où vous pouvez penser à mettre des champs statiques dans openssl.cnf et spécifier certains (CN) via -subj
option. Mais cela ne fonctionne pas.
J'ai testé un scénario où je
req_distinguished_name
etopenssl req
avec -subj=/CN=www.mydom.com
.openssl s'est plaint que le champ obligatoire du nom de pays est manquant et que le certificat généré contenait simplement CN dans la ligne d'objet. Semble être -subj
L'option remplace complètement la ligne d'objet et ne permet pas de mettre à jour un seul champ.
Cela rend les trois approches suivantes de fourniture de domaines thématiques exclusives les unes aux autres:
-subj
option