Quelqu'un peut-il m'aider avec la syntaxe exacte?
C'est un processus en trois étapes, et cela implique la modification du openssl.cnf
fichier. 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 openssl.cnf
dossier. 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 à/etc/ssl/openssl.cnf
Vous pouvez déterminer ce qui openssl.cnf
est utilisé en ajoutant un faux XXX
au fichier et voir si les openssl
chokes.
Commencez par modifier les req
paramètres. Ajoutez une alternate_names
section à openssl.cnf
avec les noms que vous souhaitez utiliser. Il n'y a aucune alternate_names
section existante , donc peu importe où vous l'ajoutez.
[ 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 le tarif standard pour un certificat de serveur. Ne t'inquiète pas nonRepudiation
. C'est un peu inutile pensé par des hommes / filles en informatique qui voulaient être avocats. Cela ne veut rien dire 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 des clés que vous fournissez n'a probablement pas d'importance.
Deuxièmement, modifiez les paramètres de signature. Trouvez cette ligne sous la CA_default
section:
# 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 moyens de copier les noms DNS sont interrompus.
Troisièmement, générez votre certificat 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/emailAddress=test@example.com
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/emailAddress=test@example.com
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