crear - ¿Cómo puedo generar un certificado autofirmado con SubjectAltName usando OpenSSL?
generar certificado autofirmado keytool (1)
Estoy intentando generar un certificado autofirmado con OpenSSL con SubjectAltName en él. Mientras estoy generando el csr para el certificado, creo que tengo que usar las extensiones v3 de OpenSSL x509. Estoy usando :
openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730
¿Alguien puede ayudarme con la sintaxis exacta?
¿Alguien puede ayudarme con la sintaxis exacta?
Es un proceso de tres pasos, e implica la modificación del archivo openssl.cnf
. Es posible que pueda hacerlo solo con opciones de línea de comando, pero no lo hago de esa manera.
Encuentra tu archivo openssl.cnf
. Es probable que se encuentre 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 utilizado por el programa integrado openssl
. En los recientes sistemas Debian se encuentra en /etc/ssl/openssl.cnf
Puede determinar qué openssl.cnf
se está utilizando al agregar un XXX
falso al archivo y ver si openssl
estrangula.
Primero, modifique los parámetros de req
. Agregue una sección alternate_names
a openssl.cnf
con los nombres que desea usar. No hay secciones alternate_names
nombres alternate_names
, 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 estándar para un certificado de servidor. No te preocupes por la no nonRepudiation
. Es una parte inútil pensada por chicos de ciencia ficción 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 manera rápida y suelta, por lo que probablemente no importe el uso de la clave que proporciones.
En segundo lugar, modifique los parámetros de firma. Encuentre esta línea en la sección CA_default
:
# Extension copying option: use with caution.
# copy_extensions = copy
Y cámbialo a:
# Extension copying option: use with caution.
copy_extensions = copy
Esto garantiza que las SAN se copien en el certificado. Las otras formas de copiar los nombres DNS están rotas.
En tercer lugar, genera tu 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/[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