¿Cómo especifico subjectAltName en el openssl cli?

9

Estoy generando un certificado SSL autofirmado:

$ openssl req -x509 -newkey rsa:2048 -subj 'CN=example.com'

Me gustaría especificar un subjectAltName también en el momento de la creación, pero no puedo encontrar información en la página de manual de openssl sobre cómo hacerlo.

Travis J Webb
fuente
2
No hay cambio de línea de comando. Debe escribirlo en un archivo de configuración y luego usar este archivo de configuración.
Steffen Ullrich

Respuestas:

4

Intente escribir el subjectAltName en un archivo temporal (lo llamaré hostextfile ) como

basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=email:[email protected],RID:1.2.3.4

y vincularlo en el comando openssl a través de la opción "-extfile", por ejemplo:

openssl ca -days 730 -in hostreq.pem -out -hostcert.pem -extfile hostextfile
Viktor
fuente
1
Yo creo que eso es correcto. Nombre alternativo del sujeto X509v3: DNS: kb.example.com, DNS: helpdesk.example.com
quadruplebucky
Usé esta descripción.
Viktor
3

El opensslcomando no proporciona una manera de incluir extensiones como el subjectAltName sin escribir primero un archivo de configuración. He escrito una sencilla utilidad que lo hace todo automáticamente. Está disponible en github: https://github.com/rtts/certify

Ejemplo de uso:

./certify example.com www.example.com mail.example.com

Esto creará un archivo llamado example.com.crtque contiene un certificado con los Nombres alternativos de sujeto de example.com, www.example.com y mail.example.com.

hedgie
fuente
0

Crear certificado autofirmado con SubjectAltName

cd /etc/ssl

cat > my.conf <<- "EOF"
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C=UA
ST=Dnepropetrovskaya
L=Kamyanske
O=DMK
OU=OASUP
emailAddress=webmaster@localhost
CN = www.dmkd.dp.ua

[ req_ext ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]
DNS.0 = www.dmkd.dp.ua
DNS.1 = dmkd.dp.ua

EOF

# Create key
openssl genrsa -des3 -out server.key.secure 2048
# Disable secret phrase for key
openssl rsa -in server.key.secure -out server.insecure.key
# Create request certificate file with params from file my.conf
openssl req -new -key server.insecure.key -out server.csr -config my.conf
# Create certificate with params from file my.conf
openssl x509 -req -days 365 -in server.csr -signkey server.insecure.key -out server.crt -extensions req_ext -extfile my.conf
# Check request file and certificate for SubjectAltName precense
openssl req -text -noout -in server.csr
openssl x509 -in server.crt -text -noout
venoel
fuente
0

Usé información aquí, pero la reduje a la información necesaria para satisfacer el navegador.

Archivo de opción de extensiones x509 v3:

echo "subjectAltName = @alt_names

[alt_names]
DNS.1 = www.example.com" > v3.ext

Archivo de claves externo:

openssl genrsa -out www.example.com.key 2048

Solicitud de firma de CA: (Se supone que tiene la clave y el certificado de CA)

openssl req -new -key www.example.com.key -subj "/CN=www.example.com" -out www.example.com.csr

Firme la solicitud para crear el certificado e incluya los datos de la extensión x509:

openssl x509 -req -in www.example.com.csr -CA ca.example.com.crt -CAkey ca.example.com.key -CAcreateserial -out www.example.com.crt -days 500 -sha256 -extfile v3.ext
barrypicker
fuente