¿Alguien puede ayudarme con la sintaxis exacta?
Es un proceso de tres pasos e implica modificar el openssl.cnf
archivo. Es posible que pueda hacerlo solo con opciones de línea de comando, pero yo no lo hago de esa manera.
Encuentra tu openssl.cnf
archivo. 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.cnf
es usado por el programa integrado openssl
. En sistemas Debian recientes se encuentra en/etc/ssl/openssl.cnf
Puede determinar cuál openssl.cnf
se está utilizando agregando un XXX
archivo falso y ver si se openssl
ahoga.
Primero, modifique los req
parámetros. Agregue una alternate_names
sección openssl.cnf
con los nombres que desea usar. No hay alternate_names
secciones 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 keyUsage
a lo siguiente en [ v3_ca ]
:
keyUsage = digitalSignature, keyEncipherment
digitalSignature
y keyEncipherment
son 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_default
secció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