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 openssl
j'utilise les paramètres -config myCustomOpenssl.cnf -reqexts server0_http
. Quand je regarde ma demande en utilisant openssl req -text -noout -in myrequest.csr
tout 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_http
les 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?