web-dev-qa-db-fra.com

Sujet Nom alternatif non présent dans le certificat

J'ai généré un CSR qui inclut les noms d'altés de sujets de champs:

openssl req -out mycsr.pem -new -key mykey.pem -days 365

Lorsque j'inspecte cela, il se présente comme prévu avec un nouveau champ:

X509v3 Subject Alternative Name:
    DNS: my.alt.dns

Cependant, lorsque je l'utilise pour signer un certificat, ce champ est omis pour une raison quelconque.

Je le génère avec la commande suivante:

openssl ca -out mycert.pem -infiles mycsr.pem

Peut-il être nécessaire que mon certificateur de certification inclue le même nom d'alt pour pouvoir l'inclure?

12
jimmy

Vous pouvez utiliser:

copy_extensions = copy 

sous votre section CA_default dans votre openssl.cnf.

mais seulement lorsque vous êtes sûr que vous pouvez faire confiance aux extensions de la CSR comme indiqué dans ce fil de discussion: http://openssl.6102.n7.nabble.com/subjectAltName-removed-from-CSR-when-signing -td26928.html

Voir aussi: Comment générer un certificat auto-signé avec SubjectAltName en utilisant OpenSSL?

13
Hans Z.

Pour tous ceux qui n’aiment pas modifier le openssl.conf à l’échelle du système, il existe une option CLI openssl native pour l’ajout des réseaux SAN au .crt à partir d’un .csr. Tout ce que vous avez à utiliser est les paramètres CLI -extfile et -extensions de openssl.

Voici un exemple:

openssl x509 -req -days 3650 -in alice.csr -signkey aliceprivate.key -out alice.crt -extfile alice-csr.conf -extensions v3_req

Cela nécessite un fichier alice-csr.conf, qui ressemble à ceci (indiquez vos données appropriées) et qui a été utilisé pour générer le .csr avec la commande openssl req -new -key aliceprivate.key -out alice.csr -config alice-csr.conf:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
Prompt = no

[req_distinguished_name]
C = DE
ST = Thuringia
L = Erfurt
O = Alice Corp
OU = Team Foo
CN = server-alice

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = server-alice
DNS.2 = localhost

N'oubliez pas que l'option -extensions v3_req correspond à la section [v3_req] du fichier alice-csr.conf, dans laquelle vous définissez vos noms alternatifs de sujet, autrement dit les domaines dans lesquels vous souhaitez émettre votre certificat.

Comme j'apprécie toujours des exemples parfaitement compréhensibles, où l'on puisse reproduire chaque étape, j'ai créé un exemple de projet comprenant les microservices Spring Boot: https://github.com/jonashackt/spring-boot-rest-clientcertificates-docker-compose

1
jonashackt