Comment émettre un certificate SSL avec une extension SAN?

J'ai une paire de keys racine CA. Comment émettre un nouveau certificate SSL avec une extension SAN (Sujet Autre Nom)? J'ai essayé ceci

openssl genrsa -out ssl.key 2048 openssl req -new -config ssl.conf -key ssl.key -out ssl.csr openssl x509 -req -sha256 -days 3650 -CAcreateserial -CAkey root.key -CA root.crt -in ssl.csr -out ssl.crt 

ssl.conf:

 [req] prompt = no distinguished_name = req_distinguished_name x509_extensions = v3_ca [req_distinguished_name] CN = 127.0.0.1 [v3_ca] subjectAltName = @alt_names [alt_names] IP.1 = 127.0.0.1 IP.2 = ::1 DNS.1 = localhost 

mais le certificate généré ne contenait pas de SAN.

Toutefois, le certificate auto-signé produit par la command ci-dessous contient SAN:

 openssl req -new -x509 -sha256 -days 3650 -config ssl.conf -key ssl.key -out ssl.crt 

  1. Mon CSR ne contenait pas de SAN. Les extensions doivent être spécifiées dans req_extensions au lieu de x509_extensions .
  2. Il y a un bug dans la command x509 :

    Les extensions dans les certificates ne sont pas transférées aux requests de certificates et vice versa.

J'ai donc résolu mon problème avec la command ca :

  1. Créé vide ca/newcerts dossier et vide ca/index.txt file.
  2. Edité ssl.conf :

     [ca] default_ca = CA_default [CA_default] dir = ./ca database = $dir/index.txt new_certs_dir = $dir/newcerts serial = $dir/serial private_key = ./root.key certificatee = ./root.crt default_days = 3650 default_md = sha256 policy = policy_anything copy_extensions = copyall [policy_anything] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [req] prompt = no distinguished_name = req_distinguished_name req_extensions = v3_ca [req_distinguished_name] CN = 127.0.0.1 [v3_ca] subjectAltName = @alt_names [alt_names] IP.1 = 127.0.0.1 IP.2 = ::1 DNS.1 = localhost 
  3. Commandes Ran:

     openssl genrsa -out ssl.key 2048 openssl req -new -config ssl.conf -key ssl.key -out ssl.csr openssl ca -config ssl.conf -create_serial -batch -in ssl.csr -out ssl.crt