Firmar con KeyLocker cloud HSM

Este artículo le enseñará a firmar en la nube con KeyLocker HSM. El tutorial aplica para todas las plataformas y diferentes herramientas de firma – desde SignTool hasta Jarsigner. Esta información es la base para firmar con Software Trust Manager de DigiCert ONE, y el principio de firma aplica para ambos servicios.

Compatibilidad de KeyLocker

Antes de probar KeyLocker, seguramente se preguntará si puede utilizarlo en su trabajo y si funcionará. KeyLocker, al igual que Software Trust Manager de DC1 y otras librerías relacionadas, son compatibles con las herramientas de firma por parte de terceros. Consulte Signing tool integration de DigiCert para obtener una lista completa de los formatos que puede firmar utilizando KeyLocker con herramientas compatibles.

A continuación encontrará los formatos más utilizados para las versiones 32b y 64b de SignTool:

  • SignTool (32-bit): .doc, .docm, .dot, .dotm, .msi, .cab, .exe, .dll, .mpp, .mpt, .pot, .potm, .ppa, .ppam, .pps, .ppsm, .ppt, .pptm, .pub, .vdw*, .vdx*, .vsd*, .vsdm, .vss*, .vssm, .vst*, .vstm, .vsx*, .vtx*, .wiz*, .xla, .xlam, .xls, .xlsb, .xlsm, .xlt, .xltm
  • SignTool (64-bit): .appx, .appxbundle, .arx, .cab, .cat, .cbx, .cpl, .crx, .dbx, .deploy, .dll, .drx, .efi, .exe, .js, .msi, .msix, .msixbundle, .msm, .msp, .ocx, .psi, .psm1, .stl, .sys, .vbs, .vsix, .wsf, .xsn

Asistente de KeyLocker

Después de iniciar sesión en KeyLocker, verá un asistente de configuración que le ayudará a crear los recursos de autenticación necesarios.

Asegúrese de guardar correctamente la información de autenticación, ya que no podrá firmar sin ella. Guarde el certificado para la autenticación en el ordenador desde donde vaya a firmar. Guardará la contraseña de este certificado (PFX) en una variable del sistema o la introducirá en el asistente.

Obtendrá los datos de autenticación en el asistente de KeyLocker

Configuración de la interfaz de firma

Antes de firmar, es necesario configurar las variables y la autenticación en su sistema. Puede hacerlo manualmente en la configuración del sistema o utilizar el asistente de DigiCert incluido en la aplicación Click-to-sign. Puede encontrar el instalador en la misma carpeta que SMCTL, por lo regular en C:/Program Files/DigiCert/DigiCert Keylocker Tools/

Es necesario configurar los siguientes datos en las variables del sistema (manualmente o con el asistente):

  • Host: URL para conectarse, normalmente es https://clientauth.one.digicert.com
  • API key: Su clave API de KeyLocker
  • Client authentication certificate: Su certificado de autenticación
  • Client authentication certificate password: Contraseña del certificado
  • Pkcs11 configuration file: Opcional para SignTool. Es el archivo de configuración para la biblioteca PKCS11 utilizada por SMCTL y Jarsigner, entre otros. Aquí mismo podrá ver cómo crearlo.

Configuración de variables del sistema en DigiCert​​®​​ Click-to-sign

Si no sabe cómo configurar manualmente las variables en Windows, siga este tutorial en vídeo.

El asistente le mostrará la configuración correcta (Credentials Saved), o bien puede verificarla mediante la utilidad SMCTL ejecutando el comando: smctl healthcheck Este comando comprueba la conexión y la autenticación contra KeyLocker, pero también comprueba si al menos una herramienta de firma es accesible. En caso afirmativo, aparecerá su ruta en el ordenador y la herramienta indicará: [Mapped: Yes].

Si no ve SignTool en el resultado de la prueba (SignTool: Mapped: No), significa que SignTool no está instalado o que su ruta no está establecida en las variables del sistema (consulte Set PATH environment variable para la configuración). Para obtener ayuda con la herramienta healthcheck, consulte el artículo Healthcheck commands en la documentación de DigiCert.

Recomendamos configurar las variables en el sistema de forma permanente o, en el caso de Windows, de forma segura en Windows Credential Manager (las variables del sistema son accesibles para cualquiera que tenga acceso al ordenador). Si sólo configura las variables en la línea de comandos, entonces tendrá que configurarlas en cada sesión. Para más, consulte la documentación Session-based environment variables.

Sincronización del certificado

Después de configurar la conexión a KeyLock (párrafo anterior), necesita sincronizar los certificados con su sistema.

C:/Program Files/DigiCert/DigiCert Keylocker Tools>smctl windows certsync --keypair-alias=key_558469087
Syncing certificate for alias: key_558469087, ID: 2a47112c-4b5d-4ce0-8e70-d67437e58135 and SHA1 Fingerprint: ecb0f10ab1XXXXXXXXXX1681fb70a31e32288263

Además, puede utilizar la utilidad smksp_cert_sync:

C:/>smksp_cert_sync
Syncing certificate for alias: key_558469087, ID: 2a47112c-4b5d-4ce0-8e70-d67437e58135

Ahora la parte pública del certificado está guardada localmente en Windows Certificate Store, pero la clave privada se almacenará en la nube.

Firma de archivos

A continuación, encontrará ayuda para firmar archivos utilizando diversas herramientas que le ayudará a iniciarse en el uso de los certificados Code Signing.

Estos programas se utilizan en la línea de comandos (CLI), con la excepción de la utilidad DigiCert® Click-to-sign (véase el último párrafo).

Firma de archivos con SMCTL (recomendado)

La utilidad SMCTL proviene de DigiCert y también se puede utilizar para la firma simplificada de archivos utilizando herramientas de terceros (al menos necesitará SignTool). SMCTL funciona con las herramientas más utilizadas: SignTool, Apksigner, Jarsigner, Mage, Nuget. Encontrará la herramienta en la carpeta C:/Archivos de programa/DigiCert/DigiCert Keylocker Tools/smctl.exe

Para seleccionar el certificado, puede utilizar un alias de clave (recomendado - disponible en KeyLocker, entre otros) o la huella del certificado (hash SHA-1).

smctl sign --keypair-alias=key_558469087 -d=SHA256 --verbose --config-file "C:/Program Files/DigiCert/DigiCert Keylocker Tools/pkcs11properties.cfg" --input "C:/Users/User/HelloSign.exe" smctl sign --fingerprint --input

Puede verificar la validez de la firma utilizando el siguiente comando: smctl sign verify --input

Encontrará la documentación de SMCTL en el sitio web de DigiCert

Firma de archivos con SignTool

Las siguientes instrucciones son para la herramienta SignTool del paquete Windows SDK. Esta es la herramienta de firma más utilizada en la plataforma Windows.

Aquí tiene un ejemplo de firma digital con certificado hash:

C:/>signtool.exe sign /sha1 ecb0f10ab1XXXXXXXXXX1681fb70a31e32288263 /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 C:/Users/User/Documents/HelloSign.exe

Y aquí un ejemplo de firma con KeyLocker y archivo del certificado:

C:/Users/User>signtool.exe sign /csp "DigiCert Signing Manager KSP" /kc key_558469087 /f C:/Users/User/Documents/cert_558469087.crt /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 C:/Users/User/Documents/HelloSign.exe
Done Adding Additional Store
Successfully signed: C:/Users/User/Documents/HelloSign.exe

Puede verificar la validez de la firma utilizando el siguiente comando: signtool verify /v file.exe También puede encontrar las propiedades de la firma en el archivo firmado a través del explorador y en Propiedades (botón derecho del ratón).

Firma de archivos con Jarsigner

Puede utilizar Jarsigner junto con KeyLocker gracias a la biblioteca PKCS11. Es posible firmar de forma simplificada con SMCTL o directamente con Jarsigner y la biblioteca PKCS11.

Ejemplo de firma con Jarsigner: jarsigner -keystore NONE -storepass NONE -storetype PKCS11 -sigalg SHA256withRSA -providerClass sun.security.pkcs11.SunPKCS11 -providerArg pkcs11properties2.cfg -signedjar C:/Users/Name/Desktop/signed/signedjar.jar C:/Users/Name/Desktop/ToSign/jartosign.jar key3 -tsa "http://timestamp.digicert.com"

Puede verificar la validez de la firma utilizando el comando: jarsigner -verify -certs -verbose

Encontrará la documentación de Jarsigner en el sitio web de DigiCert.

Firma con DigiCert​​®​​ Click-to-sign

Esta utilidad ofrece una interfaz gráfica para facilitar la firma de archivos. Sin embargo, el resultado y los principios de la firma digital no difieren de las herramientas de la línea de comandos, sino que permiten una configuración más detallada de los parámetros de firma. DigiCert® Click-to-sign sólo dispone de opciones simplificadas, aunque éstas pueden ser suficientes para la mayoría de los usuarios.

DigiCert® Click-to-sign tiene una gran ventaja - para configurarlo solo es necesario entrar al asistente de configuración de datos de acceso de KeyLocker [secrets]. El asistente simplemente comprobará su conexión a la nube y configurará estas variables en el sistema sin tener que hacerlo manualmente.

Firmar con esta herramienta es de lo más sencillo: Haga clic con el botón derecho del ratón en el archivo a firmar y seleccione Click to Sign en el menú. A continuación, podrá firmar directamente o con una confirmación, la cual encontrará en la configuración de la firma.

Revisión entes de firmar en DigiCert​​®​​ Click-to-sign

Puede encontrar la documentación de Click-to-sign en el sitio web de DigiCert

Path: C:/Program Files/DigiCert/DigiCert Keylocker Tools;C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0x64;

Integración en CI/CD

La principal ventaja de KeyLocker es la posibilidad de automatizar las firmas gracias a la integración en el flujo de trabajo CI/CD. DigiCert ha preparado una serie de scripts y plugins para las herramientas y plataformas de desarrollo más utilizadas. Existen plugins disponibles para Azure DevOps, GitHub y Jenkins, y ofrece aún más scripts de integración para la biblioteca PKCS11.

Puede encontrar información completa en el artículo CI/CD integrations.

Documentación y otras fuentes: