Crear un certificado SSL wildcard autofirmado con OpenSSL

Alguna vez nos ha tocado crear certificados autofirmados y es una tarea un poco odiosa, pues con esta entrada voy a explicar como crear un certificado autofirmado comodín o wildcard para poder utilizar en cada web del mismo dominio.

Creamos la clave privada del certificado intermedio.

 openssl genrsa -des3 -out CAPrivate.key 2048


Generamos el certificado intermedio.

 openssl req -x509 -new -nodes -key CAPrivate.key -sha256 -days 365 -out CAPrivate.pem

Creamos clave privada.

 openssl genrsa -out MyPrivate.key 2048

Generamos el CSR

 openssl req -new -key MyPrivate.key -extensions v3_ca -out MyRequest.csr

Creamos el fichero openssl.ss.cnf para crear la entrada de dominio wildcard a utilizar.

basicConstraints=CA:FALSE
subjectAltName=DNS:*.mydomain.tld
extendedKeyUsage=serverAuth

Creamos el certificado utilizando el CSR creado.

 openssl x509 -req -in MyRequest.csr -CA CAPrivate.pem -CAkey CAPrivate.key -CAcreateserial -extfile openssl.ss.cnf -out MyCert.crt -days 365 -sha256

Y ya tendríamos el certificado creado, teniendo los siguientes ficheros:

Clave privada: MyPrivate.key
Certificado intermedio: CAPrivate.pem
Certificado wildcard: MyCert.crt

Si quisiéramos utilizar el navegador en un servidor web tipo nginx pues solo tendríamos que crear un fichero bundle fusionando el certificado intermedio y el wildcard.

cat MyCert.crt CAPrivate.pem > MyCert.bundle.crt