J'essaie de générer un certificat auto-signé avec OpenSSL avec SubjectAltName dans celui-ci. Bien que je génère le CSR pour le certificat, je suppose que je dois utiliser les extensions v3 d'OpenSSL x509. J'utilise :
openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730
Quelqu'un peut-il m'aider avec la syntaxe exacte?
Quelqu'un peut-il m'aider avec la syntaxe exacte?
C'est un processus en trois étapes, et il implique la modification du fichier openssl.cnf
. Vous pourrez peut-être le faire avec uniquement des options de ligne de commande, mais je ne le fais pas de cette façon.
Trouvez votre fichier openssl.cnf
. Il est probablement situé dans /usr/lib/ssl/openssl.cnf
:
$ find /usr/lib -name openssl.cnf
/usr/lib/openssl.cnf
/usr/lib/openssh/openssl.cnf
/usr/lib/ssl/openssl.cnf
Sur mon système Debian, /usr/lib/ssl/openssl.cnf
est utilisé par le programme intégré openssl
. Sur les systèmes Debian récents, il se trouve à l'adresse /etc/ssl/openssl.cnf
Vous pouvez déterminer quel openssl.cnf
est utilisé en ajoutant un XXX
non essentiel au fichier et voir si openssl
est un étranglement.
Commencez par modifier les paramètres req
. Ajoutez une section alternate_names
à openssl.cnf
avec les noms que vous souhaitez utiliser. Il n'y a pas de sections alternate_names
existantes, donc l'endroit où vous l'ajoutez n'a pas d'importance.
[ alternate_names ]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = mail.example.com
DNS.4 = ftp.example.com
Ensuite, ajoutez ce qui suit à la section existante[ v3_ca ]
. Recherchez la chaîne exacte [ v3_ca ]
:
subjectAltName = @alternate_names
Vous pouvez changer keyUsage
comme suit sous [ v3_ca ]
:
keyUsage = digitalSignature, keyEncipherment
digitalSignature
et keyEncipherment
sont la norme pour un certificat de serveur. Ne vous inquiétez pas pour nonRepudiation
. C'est un peu inutile imaginé par les gars de la science-fiction comp qui veulent être des avocats. Cela ne signifie rien dans le monde juridique.
En fin de compte, l'IETF (RFC 5280), les navigateurs et les autorités de certification fonctionnent rapidement et de manière lâche, de sorte que l'utilisation de la clé que vous fournissez n'a probablement aucune importance.
Deuxièmement, modifiez les paramètres de signature. Trouvez cette ligne sous la section CA_default
:
# Extension copying option: use with caution.
# copy_extensions = copy
Et changez le en:
# Extension copying option: use with caution.
copy_extensions = copy
Cela garantit que les SAN sont copiés dans le certificat. Les autres façons de copier les noms DNS sont brisées.
Troisièmement, générez votre auto-signé:
$ openssl genrsa -out private.key 3072
$ openssl req -new -x509 -key private.key -sha256 -out certificate.pem -days 730
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
...
Enfin, examinez le certificat:
$ openssl x509 -in certificate.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 9647297427330319047 (0x85e215e5869042c7)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=MD, L=Baltimore, O=Test CA, Limited, CN=Test CA/[email protected]
Validity
Not Before: Feb 1 05:23:05 2014 GMT
Not After : Feb 1 05:23:05 2016 GMT
Subject: C=US, ST=MD, L=Baltimore, O=Test CA, Limited, CN=Test CA/[email protected]
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (3072 bit)
Modulus:
00:e2:e9:0e:9a:b8:52:d4:91:cf:ed:33:53:8e:35:
...
d6:7d:ed:67:44:c3:65:38:5d:6c:94:e5:98:ab:8c:
72:1c:45:92:2c:88:a9:be:0b:f9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
34:66:39:7C:EC:8B:70:80:9E:6F:95:89:DB:B5:B9:B8:D8:F8:AF:A4
X509v3 Authority Key Identifier:
keyid:34:66:39:7C:EC:8B:70:80:9E:6F:95:89:DB:B5:B9:B8:D8:F8:AF:A4
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign
X509v3 Subject Alternative Name:
DNS:example.com, DNS:www.example.com, DNS:mail.example.com, DNS:ftp.example.com
Signature Algorithm: sha256WithRSAEncryption
3b:28:fc:e3:b5:43:5a:d2:a0:b8:01:9b:fa:26:47:8e:5c:b7:
...
71:21:b9:1f:fa:30:19:8b:be:d2:19:5a:84:6c:81:82:95:ef:
8b:0a:bd:65:03:d1