5 votes

Comment hériter du nom commun vers le nom alternatif du sujet ?

Sur mon PC équipé de Windows 10, je dois utiliser OpenSSL. J'ai téléchargé la version 1.0.2n et je suis ce guide : Création d'un certificat SSL avec plusieurs noms d'hôtes J'ai modifié le fichier de configuration openssl.cfg (situé dans C:\OpenSSL -Win64 \bin ).

Après quelques essais, je peux générer sans problème les clés et les certificats.

Mon problème est le suivant : mes indications pour la génération des certificats sont telles que les Sujet Nom alternatif ne doit avoir qu'une seule valeur et doit correspondre à l'élément Nom commun domaine. Ainsi, si (en remplissant le certificat) je remplis le champ commonName avec exemple.com Le nom alternatif du sujet doit également être exemple.com . Je sais que je peux modifier à chaque fois le fichier cfg et définir manuellement la valeur du SAN dans la section v3-req, mais je veux éviter cela ; je cherche un moyen de copier la valeur que je demande pour le nom commun dans le champ SAN.

J'ai donc essayé ceci : dans le fichier openss.cfg, je suis allé dans la section v3 req et je l'ai modifiée de cette façon :

[ v3_req ]

# Extensions to add to a certificate request

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

[alt_names] 
DNS.1 = commonName:copy

c'est-à-dire que j'ai essayé d'exploiter la fonction :copy mais, malheureusement, cette action ne fonctionne pas. Si, après la génération du certificat, je lance la commande

req -text -noout -in <filename.csr>

pour vérifier mon certificat, dans la section spécifique j'obtiens ceci :

X509v3 Subject Alternative Name:
    DNS:commonName.copy 

Comme vous pouvez le voir, le résultat est le côté droit de ma déclaration sous la rubrique [alt_names] section.

Les questions sont donc les suivantes : Existe-t-il une méthode permettant de transformer le nom commun en nom alternatif pour le sujet ? Et si oui, comment ?

8voto

nachopro Points 181

Utilisation ${section::name} pour lire des variables précédemment définies.

Voici un exemple qui fonctionne :

[ req ]

prompt             = no
string_mask        = default

# The size of the keys in bits:
default_bits       = 2048
distinguished_name = req_dn
req_extensions     = req_ext

[ req_dn ]

# Or traditional org style:
countryName = gb
organizationName = example
commonName = acme.example.test

[ req_ext ]

subjectAltName = @alt_names

[alt_names]
DNS.1 = ${req_dn::commonName}
DNS.2 = alt.example.test

Suivie par :

openssl req -nodes -new -keyout test.key -out test.csr -config ./openssl.cnf

Il en résulte que :

openssl req -noout -text -in test.csr 

donner :

 ...
    Attributes:
    Requested Extensions:
        X509v3 Subject Alternative Name:
            DNS:acme.example.test, DNS:alt.example.test
Signature Algorithm: sha256WithRSAEncryption
     92:1c:e0:0e:6d:7d:2e:b4:64:c5:ab:ff:6a:37:dd:35:98:58:
 ...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X