¿Alguien puede ayudarme con la sintaxis exacta?
Es un proceso de tres pasos e implica modificar el openssl.cnfarchivo. Es posible que pueda hacerlo solo con opciones de línea de comando, pero yo no lo hago de esa manera.
Encuentra tu openssl.cnfarchivo. Probablemente esté ubicado en /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
En mi sistema Debian , /usr/lib/ssl/openssl.cnfes usado por el programa integrado openssl. En sistemas Debian recientes se encuentra en/etc/ssl/openssl.cnf
Puede determinar cuál openssl.cnfse está utilizando agregando un XXXarchivo falso y ver si se opensslahoga.
Primero, modifique los reqparámetros. Agregue una alternate_namessección openssl.cnfcon los nombres que desea usar. No hay alternate_namessecciones existentes , por lo que no importa dónde lo agregue.
[ alternate_names ]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = mail.example.com
DNS.4 = ftp.example.com
A continuación, agregue lo siguiente a la sección existente [ v3_ca ] . Busque la cadena exacta [ v3_ca ]:
subjectAltName = @alternate_names
Puede cambiar keyUsagea lo siguiente en [ v3_ca ]:
keyUsage = digitalSignature, keyEncipherment
digitalSignaturey keyEnciphermentson tarifa estándar para un certificado de servidor. No se preocupe nonRepudiation. Es una parte inútil ideada por chicos / chicas informáticos que querían ser abogados. No significa nada en el mundo legal.
Al final, el IETF ( RFC 5280 ), los navegadores y las CA se ejecutan de forma rápida y flexible, por lo que probablemente no importa qué uso de clave proporcione.
En segundo lugar, modifique los parámetros de firma. Encuentre esta línea en la CA_defaultsección:
# Extension copying option: use with caution.
# copy_extensions = copy
Y cámbielo a:
# Extension copying option: use with caution.
copy_extensions = copy
Esto asegura que las SAN se copien en el certificado. Las otras formas de copiar los nombres DNS están rotas.
En tercer lugar, genere su certificado autofirmado:
$ 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.
...
Finalmente, examine el certificado:
$ 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