Demandes de signature OpenSSL avec extensions

8

J'ai défini une petite CA auto-signée pour mon environnement de développement. Je voudrais créer de nombreux certificats de serveur différents avec des propriétés différentes. Mon approche est de créer une section d'extensions spécifique pour chaque serveur. J'ai un grand openssl.cnf qui contient des sections comme celle-ci:

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld

Ensuite, lorsque je crée mon csr en utilisant opensslj'utilise les paramètres -config myCustomOpenssl.cnf -reqexts server0_http. Quand je regarde ma demande en utilisant openssl req -text -noout -in myrequest.csrtout semble parfait.

Cependant, une fois que j'ai signé la demande, les sections «Utilisation des clés étendues X509v3» et «Autre nom du sujet X509v3» ont disparu. Pour remédier à ce problème, j'ai également mis -extfile myCustomOpenssl.cnf -reqexts server0_httples paramètres de l'appel de signature à openssl.

Est-ce le comportement attendu? J'ai toujours pensé que le fichier csr seul devait être suffisant pour créer un certificat comme demandé, c'est-à-dire avec toutes ses sections. La façon dont mon système fonctionne actuellement, c'est que j'obtiens un certificat avec des sections manquantes. Pour obtenir le certificat comme je le veux, je dois fournir le fichier csr et la section correspondante du fichier de configuration openssl que j'ai utilisé pour créer la demande. Ce n'est pas un problème pour ma petite configuration, mais cela devient assez compliqué si je deviens une plus grande autorité de certification. Est-ce censé être comme ça ou est-ce que j'utilise incorrectement openssl?

Bananguin
la source

Réponses:

7

Je l'ai trouvé! Ce que j'ai décrit est le comportement normal attendu d'OpenSL. Par défaut, les extensions personnalisées ne sont pas copiées dans le certificat.

Pour que openssl copie les extensions demandées dans le certificat, il faut spécifier copy_extensions = copypour la signature. Dans les installations de vanille cela signifie que cette ligne doit être ajouté à la section default_CAdans openssl.cnf.

Dans le openssl.cnfqui est livré avec (au moins) Centos, la ligne est déjà incluse en tant que commentaire et porte l'avertissement "à utiliser avec prudence". Les demandeurs peuvent en abuser pour vous faire émettre un certificat CA, si vous ne faites pas attention.

Bananguin
la source