Cómo crear un certificado usando OpenSSL con Nombre Alterno del Sujeto (SAN)

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Bizagi Studio > ¿Cómo hacer? .... > Temas de interés general >

Cómo crear un certificado usando OpenSSL con Nombre Alterno del Sujeto (SAN)

Introducción

Los navegadores han reforzado las políticas de seguridad y requieren que las aplicaciones web abiertas utilicen protocolos seguros como HTTPS. Debido a que se accede al Portal de Trabajo de Bizagi mediante navegadores web, debe configurar todos los entornos del Portal de trabajo mediante HTTPS.

 

Que es SAN

El nombre alternativo del sujeto permite especificar nombres de host, por ejemplo, sitios (por ejemplo, www.myapp.com), direcciones IP, dominios (por ejemplo, * ejemplo.com) o nombres comunes protegidos por el mismo certificado.

 

Navegadores que requieren HTTPS con SAN

• Chrome a partir de la versión 58. También requiere que el certificado tenga el campo Nombre alternativo del sujeto (SAN).

•Borde

Nota: Aunque es posible que otros navegadores no soliciten un certificado para usar el protocolo HTTPS, es recomendable configurar HTTPS para todos sus entornos (desarrollo, prueba y producción).

 

Certificado para entornos de desarrollo y prueba

Para el entorno de desarrollo o prueba, puede usar certificados comprados (si ya los tiene), certificados firmados por una CA o puede usar certificados autofirmados. Si utiliza certificados autofirmados, es importante que el certificado tenga el campo Nombre alternativo del sujeto (SAN).

 

Certificado para entornos de producción

En entornos de producción, no puede utilizar certificados autofirmados. Por lo tanto, debe adquirir un certificado de una autoridad certificadora (CA).

 

Crear certificados autofirmados

La siguiente ilustración representa (en un nivel alto) el trabajo con certificados. La autoridad de certificación puede no ser necesariamente externa, pero puede configurarse localmente mediante el uso de un certificado autofirmado.

 

x509_overview

 

La ilustración muestra la generación de un certificado utilizando un par de claves privadas y públicas. Firma el certificado con el certificado raíz de una Autoridad de certificación (proporcionando la clave pública a través de una solicitud de firma de certificado .csr). Luego emite y exporta el certificado firmado en formato P12 o PFX.

 

Antes de empezar

Para claridad, se recomienda que cree un directorio para almacenar exclusivamente los certificados que se emitirán en los siguientes pasos.

A esta ruta se le referirá como <CERT_DIR>. Usted necesita permisos de escritura en el folder.

 

Para este ejemplo usaremos la siguiente ruta C:\temp\MyCerts.

 

Pasos de Configuración

Al emitir un certificado auto-firmado, se llevan a cabo los siguiente pasos enumerados:

1.Descargar OpenSSL

2.Crear su propia autoridad de certificación (volverse CA)

3.Crear un archivo de configuración para el certificado

4.Crear una solicitud de firma de certificados (CSR por sus siglas en inglés)

5.Firmar la solicitud (CSR) con la llave de CA

6.Exportar el certificado en formato P12 o PFX

7.Instalar el certificado en el servidor

8.Configurar el servidor de aplicaciones (IIS) usando el certificado

9.Agregar el certificado a la tienda de confianza del servidor

 

1. Descargar OpenSSL

Descargue el instalador apropiado de OpenSSL desde https://slproweb.com/products/Win32OpenSSL.html, donde puede elegir instaladores de 64 bits o 32 bits de acuerdo con la arquitectura de su sistema.

 

Para el Sistema Operativo Windows, la instalación es asistida, y se recomienda seguir los pasos por defecto. Guarde las configuraciones indicando copiar las DLLs de OpenSSL en el directorio de binarios de OpenSSL:

 

OpenSSL_2

 

Al terminar la instalación exitosamente, debe poder ver el archivo ejecutable openssl.exe (en el caso de windows), además del archivo de configuración openssl.cfg, en el directorio de binarios o ubicación indicada en la instalación:

 

OpenSSL_3

 

Se recomienda que añada OpenSSL a sus variables de ambiente del sistema, de manera que pueda correr sus ejecutables sin preocuparse de las rutas.

Para ello, edite la variable de ruta Path:

 

SAML_OpenSSL2

 

Y asegúrese de añadir la ubicación anterior (directorio binario de OpenSSL) a sus rutas registradas:

 

SAML_OpenSSL1

 

Finalmente, dé clic en Ok y guarde los cambios cuando cierre las ventanas (cualquier línea de comandos, ventanas de variables de ambiente, etc).

Con los pasos indicados en este artículo, OpenSSL se empleará usando línea de comandos.

En caso de que esté interesado en aprender otras opciones y para obtener información completa sobre las opciones de comandos de OpenSSL, refiérase a su documentación oficial en https://www.openssl.org/docs/man1.0.2/apps/openssl-req.html.sl.org/docs/man1.0.2/apps/openssl-req.html.

 

2. Crear su propia Autoridad de Certificación de autofirma (CA)

Cuando una CA firma una solicitud de firma de certificado, utiliza su propia clave privada para fines de firma. Por lo tanto, para crear su propia clave de CA, debe seguir estos pasos:

 

Abra la consoma de comandos, cambie el directorio a <CERT_DIR>, y ejecute el siguiente comando:

 

openssl req -new -newkey rsa:2048 -days [validity] -extensions v3_ca -subj "[key_details]" -nodes -x509 -sha256 -set_serial 0 -keyout [root_key].key -out [root_cer].cer

 

donde:

 

[validity]: Número de días para certificar el certificado. Por ejemplo, 365 aplica para 1 año.

[key_details]: El identificador y detalles del certificado.

Dicha información debe tener el siguiente formato: /C=[CO]/ST=[ST]/L=[city]/O=[org]/OU=[unit]/CN=[display_name]/

Remplace [CO] por el código de 2 dígitos de su país, [ST] por el código de 2 dígitos de su estado, [city] por su localidad o ciudad, [org] por el nombre de su organización, [unit] por su unidad organizacional, y [display_name] por el identificador del certificado.

Para claridad y conveniencia, se sugiere que el [display_name] contenga la palabra Root en alguna parte.

[root_key]: El nombre para el archivo que se generará con la llave privada.

Para claridad y conveniencia, se sugiere que incluya la palabra Root en alguna parte.

[root_cer]: El nombre para el archivo del certificado que se generará con la llave pública.

Para claridad y conveniencia, se sugiere que incluya la palabra Root en alguna parte.

 

SAML_OpenSSL21

 

3. Crear un archivo de configuración para el certificado con el Nombre Alterno del Sujeto

Para crear un certificado usando el Nombre Alterno del Sujeto debe crear un archivo de configuración de OpenSSL que permita crear certificados con este atributo.

 

Cree una nueva carpeta o use una carpeta con permisos de escritura.

 

Crear un archivo de texto vacío. Póngale el nombre openssl-san.cnf. La extenxión cnf es importante.

 

Agregue las siguientes líneas al archivo.

 

[ req ]

default_bits           = 2048

distinguished_name     = req_distinguished_name

req_extensions         = req_ext

 

[ req_distinguished_name ]

countryName            = Country Name (2 letter code)

stateOrProvinceName    = State or Province Name (full name)

localityName           = Locality Name (eg, city)

organizationName       = Organization Name (eg, company)

commonName             = Common Name (e.g. server FQDN or YOUR name)

 

# Optionally, specify some defaults.

countryName_default            = [Country]

stateOrProvinceName_default    = [State]

localityName_default           = [City]

0.organizationName_default     = [Organization]

organizationalUnitName_default = [Organization unit]

emailAddress_default           = [Email]

 

[ req_ext ]

subjectAltName = @alt_names

 

[alt_names]

DNS.1   = [DNS1]

DNS.2   = [DNS2]

 

Reemplace los siguientes valores:

[Country]: Nombre del país (código de 2 letras).

[State]: Nombre del estado o provincia (nombre completo).

[City]: Nombre de la ciudad (nombre completo).

[Organization]: Nombre de la organización.

[Organization unit]: nombre de la unidad de la organización.

[Email]: Su dirección de correo electrónico.

[DNS1] o [DNS2] (o más si necesita): Usted puede escribir el DNS asociado con el sitio de su Portal de Trabajo. Si usted está usando localhost usted puede escribir múltiples opciones para acceder a este. Por ejemplo puede usar las siguientes opciones "localhost","127.0.0.1","localhost.domain.com","*.domain.com".

 

vea un ejemplo usando localhost con nombres alternativos del DNS:

 

hmtoggle_plus1        Configuration File Example [ req ]
default_bits           = 2048
distinguished_name     = req_distinguished_name
req_extensions         = req_ext

[ req_distinguished_name ]
countryName            = Country Name (2 letter code)
stateOrProvinceName    = State or Province Name (full name)
localityName           = Locality Name (eg, city)
organizationName       = Organization Name (eg, company)
commonName             = Common Name (e.g. server FQDN or YOUR name)

# Optionally, specify some defaults.
countryName_default            = US
stateOrProvinceName_default    = California
localityName_default           = San Francisco
0.organizationName_default     = My Company
organizationalUnitName_default = research
emailAddress_default           = me@mycompany.com

[ req_ext ]
subjectAltName = @alt_names

[alt_names]
DNS.1   = localhost
DNS.2   = 127.0.0.1
DNS.3
= localhost.mydomain.com
DNS.4
= *mydomain.com

 

Guarde el archivo en la ubicación que tenga permisos de escritura.

 

4. Crear una solicitud de firma de certificados (CSR por sus siglas en inglés)

Necesitará emitir una solicitud de firma de certificados antes de emitir el certificado final, creando tanto la llave pública como la privada.

 

Abra una línea de comandos y navegue hasta el directorio <CERT_DIR> creado previamente.

 

Ejecute el siguiente comando para crear la solicitud de firma de certificados, para el certificado que se usará para firmar aserciones (confirmaciones):

openssl req -newkey rsa:2048 -subj "[certificate_details]" -nodes -sha256 -keyout [key_name].key -out [csr_name].csr -config [ConfigFilePath]\openssl-san.cnf

 

Considere remplazar:

[certificate_details]: El identificador y detalles que se muestran del certificado.

Dicha información debe tener el siguiente formato:

 

/C=[CO]/ST=[ST]/L=[city]/O=[org]/OU=[unit]/CN=[display_name]/

En tal formato, remplace [CO] por el código de 2 dígitos de su país, [ST] por el código de 2 dígitos de su estado, [City] por la localidad o ciudad, [Org] por el nombre de su organización, [unit] por la unidad organizacional, y [display_name] por el identificador del certificado.

[key_name]: El nombre para el archivo que se generará conteniendo la llave privada.

[csr_name]: El nombre del archivo que se generará conteniendo la solicitud de firma de certificado con la llave pública.

[ConfigFilePath]: ubicación de la carpeta donde guardó el archivo CNF.

 

SAML_OpenSSL22

 

Una vez que el comando haya ejecutado satisfactoriamente, los dos archivos de salida (.key y .csr) quedarán en su directorio <CERT_DIR>:

 

SAML_OpenSSL23

 

5. Firmar la solicitud

Para firmar la solicitud, necesita una Autoridad de certificación (CA). Para los certificados autofirmados, puede firmar el certificado con la clave CA creada previamente. También puede enviar el archivo CSR a una CA pública o una CA que pueda tener su organización.

 

Autofirma mediante OpenSSL

Si va a autofirmar con su propia clave de CA. Abra un símbolo del sistema, cambie el directorio al <CERT_DIR> que creó.

 

Ejecute el siguiente comando:

openssl x509 -req -sha256 -CAcreateserial -in [csr_name].csr -days [validity] -CA [root_cer].cer -CAkey [root_key].key -out [cer_name].cer

 

Donde:

[validity]: Número de días para certificar el certificado. Por ejemplo, 365 aplica para 1 año. Algunos navegadores no aceptan certificados con una validación mayor a dos años, sin embargo, puede decidir lo que mejor se ajuste a sus políticas.

[certificate_details]: El identificador y detalles del certificado.

Dicha información debe tener el siguiente formato: /C=[CO]/ST=[ST]/L=[city]/O=[org]/OU=[unit]/CN=[display_name]/

Remplace [CO] por el código de 2 dígitos de su país, [ST] por el código de 2 dígitos de su estado, [city] por su localidad o ciudad, [org] por el nombre de su organización, [unit] por su unidad organizacional, y [display_name] por el identificador del certificado.

Para claridad y conveniencia, se sugiere que el [display_name] contenga la palabra Root en alguna parte.

[root_key]: El nombre para el archivo que se generará con la llave privada.

Para claridad y conveniencia, se sugiere que incluya la palabra Root en alguna parte.

[root_cer]: El nombre para el archivo del certificado que se generará con la llave pública.

Para claridad y conveniencia, se sugiere que incluya la palabra Root en alguna parte.

 

SAML_OpenSSL24

 

Esto genera un archivo .cer asociado a su certificado, en el folder <CERT_DIR>.

 

Firmar usando un comando de windows y la CA de su organización

Abra la consola de comando, navege a la carpeta de <CERT_DIR> creada previamente. Ejecute el siguiente comando para firmar la solicitud CSR:

 

certreq -submit -attrib "CertificateTemplate:WebServer" [csr_name]

 

Donde:

[csr_name]: El nombre del archivo de solicitud de firma de certificado definida aquí.

 

Seleccione el CA, para este ejemplo se usará VisionSoftware (Kerberos) en la ventana que se muestra. Luego, haga clic en OK.

 

SubjectAltName03

 

Guarde el archivo con extensión .cer.

Una vez que el comando se ejecuta correctamente, el archivo de salida con la extensión .cer aparece en su carpeta <CERT_DIR>:

 

6. Exportar las llaves pública y privada bajo un formato P12 o PFX

Para instalar el certificado en el servidor de aplicaciones (IIS), necesita un archivo P12 o PFX que contenga tanto la clave privada como la pública.

 

Ejecute primero el siguiente comando para el certificado empleado para la firma de aserciones:

openssl pkcs12 -export -in [cer_name].cer -inkey [key_name].key

-CSP "Microsoft Enhanced RSA and AES Cryptographic Provider" -out [p12_name].p12

 

Considere remplazar:

[cer_name]: el nombre del certificado que firmó en el paso anterior.

[key_name]: el nombre del archivo de clave privada del certificado firmado.

[p12_name]: el nombre del archivo P12 que se generará.

 

SAML_OpenSSL25

 

En este punto, verá un mensaje para definir y confirmar una contraseña para el archivo P12.

Asegúrese de copiar la contraseña y de mantenerla en un lugar seguro, ya que la necesita para los pasos de configuración posteriores en el servidor.

 

Una vez que el comando se ejecuta correctamente, debe aparecer un archivo de salida .p12 en su carpeta <CERT_DIR>:

 

Punto de control

En este punto, usted puede decidir verificar que el archivo .p12 este bien formado y que contiene todo lo que necesita.

 

Para esto, ejecute el siguiente comando para verificar el archivo .p12:

openssl pkcs12 -info -nodes -in [p12_name].p12

 

Considere reemplazar:

[p12_name]: Nombre del archivo P12 como se definió en el paso anterior.

 

Note que en este punto, se le pedirá ingresar la contraseña del archivo P12.

 

Aparte de ver los errores en el comando, verifique:

Que la contraseña que definió es correcta.

Que se muestran las llaves pública y privada.

Que el asunto muestra los detalles precisamente como se definieron al generar el certificado.

Que el emisor muestra los detalles precisos de la CA utilizada para firmar el certificado.

Otros, como el algoritmo empleado.

 

7. Instalar el certificado

Siga los pasos a continuación para instalar el certificado.

 

Haga doble clic en el archivo .p12 creado en el paso 4. En el asistente, seleccione Local Machine y haga clic en Siguiente (Next).

 

SubjectAltName08

 

Por defecto, el asistente ya ha seleccionado el archivo .p12 que desea instalar. Haga clic en Siguiente (Next).

 

SubjectAltName09

 

Proporcione la contraseña que definió para su certificado. Asegúrese de que las opciones de Importar (Import options) en la imagen estén seleccionadas y haga clic en Siguiente (Next).

 

SubjectAltName10

 

Seleccione Place all certificates in the following store, luego seleccione Personal.

Haga clic en Siguiente (Next).

 

SubjectAltName11

 

Finalmente, revise el resumen de las opciones que ha elegido y haga clic en Finalizar (Finish).

 

SubjectAltName12

 

8. Importar y vincular el certificado en el servidor de aplicaciones (IIS)

Siga los pasos a continuación para importar el certificado en IIS:

 

Abra la consola de administración de IIS.

 

Una vez que tenga un certificado válido para su servidor, especifique los enlaces en el sitio web del portal de trabajo (de forma predeterminada, en el sitio web predeterminado). Agregue una nueva encuadernación. Seleccione el tipo de HTTPS y escriba el puerto, generalmente 443 para HTTPS. Luego seleccione el certificado SSL usando el certificado mencionado anteriormente.

 

https_04

 

 

Haga clic en Importar en el panel derecho y seleccione el archivo .p12 generado anteriormente, proporcione también su contraseña.

 

SubjectAltName14

 

Haga clic en Aceptar para guardar esta configuración.

 

Ahora se puede acceder a todos los sitios, dentro el sitio web predeterminado, como el Portal de Trabajo, el editor de Sitios o los sitios publicados, mediante el protocolo HTTPS.

 

note_pin

Cuando utilice HTTPS, considere editar el archivo web.config para especificar <add key = "PROTOCOL" value = "HTTPS" />.

Esto se aplica cuando se utilizan enlaces de casos en notificaciones de procesos, como se describe en Notificaciones mediante enlaces de casos.

 

Para más recomendaciones de seguridad en el IIS haga clic acá.

 

9. Agregar el certificado a la tienda de confianza de su servidor

Para incluir el certificado en el que confíe el servidor Certification Authorities Store. Abra el cuadro de diálogo Run de Windows, buscando en Windows la palabra Run:

 

https_05

 

En el menú de archivo, haga clic en Agregar /Remover Snap In. Seleccione Certificados y haga click en Agregar.

 

https_06

 

Seleccione Cuenta de Computadora y haga clic en Siguiente. Seleccione Computadora local y haga clic en Finalizar. Luego haga clic en Aceptar.

 

Abra la carpeta personal y haga clic en la carpeta Certificados. Haga clic con el botón derecho en el Certificado con el nombre descriptivo creado con el comando. Seleccione Todas las tareas y haga clic en Exportar.

 

https_08

 

En el Asistente, haga clic en Siguiente. Seleccione Sí, exporte la llave privada y haga clic en Siguiente. Exporte el certificado en formato PFX.

 

https_09

 

Defina un password y de clic en siguiente.

 

Defina un folder y un nombre para exportar el archivo. Finalmente de clic en Finalizar. Ahora tiene el certificado exportado.

 

En la misma ventana de MMC, seleccione ahora Authoridades Confiadas de Certificación. Haga clic derecho en Certificados, y luego haga click en Todas Las Tareas /Importar.

 

https_10

 

En el asistente de importación, haga clic en Siguiente y luego seleccione el archivo exportado anteriorment. En el siguiente paso, escriba la contraseña utilizada al exportar el certificado. y seleccione la tienda Trusted Root Certification Authorities.

 

Después de anotar que si revisa su certificado en el IIS, el estado debe ser OK.

 

https_12

 

También puede revisar que su certificado es válido cuando acceda al Portal de Trabajo, haciendo click en el ícono de seguridad al lado de la URL:

 

https_13

 

note_pin

Si el navegador aún muestra que el certificado no es válido en Chrome, asegúrese de restablecer Google Chrome (cerrando todas las pestañas abiertas en el administrador de tareas) y restablecer su servidor de aplicaciones web (IIS).