Firmar con KeyLocker cloud HSM
Este artículo te enseñará a firmar usando la nube y KeyLocker HSM. La guía es relevante para todas las plataformas y diversas herramientas de firma, desde signtool hasta jarsigner. La información proporcionada también es la base para firmar con el Software Trust Manager de DigiCert ONE; el principio de la firma, por lo tanto, se aplica a ambos servicios mencionados.
Compatibilidad de KeyLocker
Seguramente antes de probar KeyLocker, te preguntarás si será posible utilizarlo en tu flujo de trabajo y si funcionará para ti. KeyLocker y las bibliotecas relacionadas admiten (al igual que el Software Trust Manager en DC1) herramientas de firma de terceros. En el sitio web de DigiCert, encontrarás en el artículo Integración de herramientas de firma un resumen completo de los formatos de archivo que puedes firmar utilizando herramientas compatibles con KeyLocker.
Aquí mencionaré solo el más extendido Signtool en versión de 32 bits y 64 bits:
- 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
Guía de KeyLocker
Después de iniciar sesión en KeyLocker, verás la Guía de configuración que te ayudará a descargar la aplicación DigiCert ONE Clients. Con ella, iniciarás sesión en el ordenador a la cuenta KeyLocker, te instalará las bibliotecas necesarias incluyendo SMCTL y configurará variables en el sistema para la autenticación. En comparación con el procedimiento anterior, esto supone una simplificación significativa.
En el primer paso de la guía de KeyLocker, descarga, instala y ejecuta la aplicación DigiCert ONE Clients app. El inicio de sesión es el mismo que configuraste en la interfaz web de KeyLocker.
En el siguiente paso en la aplicación de escritorio, instala SMCTL, que es la herramienta principal para la firma.
Después de la instalación, verás la selección de tres formas posibles de almacenar las variables de KeyLocker en el sistema. Recomendamos dejar la opción predeterminada "Store my credentials". Los datos se guardarán en el sistema y no necesitarás iniciar sesión en la cuenta antes de cada firma.
Si eliges la opción de almacenamiento en el sistema, en Windows, las credenciales estarán en el Administrador de credenciales (Credential Manager).
Después de configurar las credenciales en el sistema, lo cual ejecuta automáticamente la aplicación DigiCert ONE Clients app, pasa al tercer paso de la guía. Ahora, en tu sistema necesitarás ejecutar el comando SMCTL healthcheck, que probará la comunicación del entorno local con KeyLocker y la autenticación adecuada. Todo debería realizarse sin problemas, así que confirma "I have run the healthcheck command in SMCTL" y haz clic en el botón Check Status.
Verás la confirmación en verde You're ready to start signing with SMCTL, lo que significa que todo está configurado correctamente, la comunicación funciona y puedes comenzar a firmar.
Elige la plataforma correcta de las cuatro opciones que usas para firmar y luego verás un ejemplo (guía) para firmar usando KeyLocker.
Firmar archivos
Para firmar, recomendamos principalmente utilizar la utilidad SMCTL, que funciona en la línea de comandos (CLI). La segunda opción es la utilidad DigiCert® Click-to-sign (ver último párrafo).
Guías para firmar archivos para las principales plataformas (Authenticode, Docker, Java...) se encuentran directamente en la interfaz web de KeyLocker. Una vez completada la guía (título "¡Configuración completa!"), puedes hacer clic en una de las plataformas ofrecidas y la interfaz te mostrará un comando preparado con el certificado seleccionado. Solo necesitas copiarlo en CLI y especificar el archivo a firmar. ¡No puede ser más simple!
Firmar archivos usando SMCTL (recomendado)
La utilidad SMCTL proviene de DigiCert y también puede servir para simplificar la firma de archivos usando herramientas de terceros (aún necesitas al menos signtool). SMCTL trabaja con las herramientas más extendidas - Signtool, Apksigner, Jarsigner, Mage, Nuget. Encontrarás la herramienta en la carpeta C:/Program Files/DigiCert/DigiCert Keylocker Tools/smctl.exe
En el último paso de la guía, haz clic en Authenticode y en el siguiente diálogo selecciona un certificado que esté disponible en KeyLocker. Obtendrás un comando completo para firmar, donde solo necesitas añadir el destino y ejecutarlo localmente en tu CLI. Recibirás inmediatamente una confirmación de firma exitosa del archivo.
La documentación completa de SMCTL se encuentra en el sitio web de DigiCert.
Firmar archivos usando Signtool
La siguiente guía trata la herramienta Signtool del paquete Windows SDK. Es la herramienta más usada para firmar en la plataforma Windows.
El comando Signtool necesita especificar qué archivo quieres firmar, con qué certificado y si es necesario, parámetros relacionados. Puedes referirte al certificado de firma de varias maneras: Puedes dejar que Signtool elija el certificado automáticamente en base al almacén, o puedes seleccionar un certificado manualmente mediante un archivo con el certificado guardado (por supuesto, solo la parte pública sin la clave privada), o puedes usar el hash SHA-1 del certificado.
Aquí hay un ejemplo de firma usando el hash de huella del certificado:
C:/>signtool.exe sign /sha1 ecb0f10ab1XXXXXXXXXX1681fb70a31e32288263 /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 C:/Users/User/Documents/HelloSign.exe
Y aquí hay un ejemplo de firma usando KeyLocker y un archivo con 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
La validez de una firma se puede verificar con el comando: signtool verify /v file.exe Las propiedades de la firma también se pueden encontrar en el archivo firmado a través del Explorador y Propiedades (clic derecho del ratón).
Firmar archivos usando Jarsigner
Jarsigner puede usarse junto con KeyLocker gracias a la biblioteca PKCS11; se puede firmar de forma simplificada usando 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"
La corrección de la firma puede verificarse con el comando:
jarsigner -verify
La documentación de Jarsigner se encuentra en el sitio web de DigiCert.
Firmar con DigiCert® Click-to-sign
Esta utilidad ofrece una interfaz gráfica para facilitar la firma de un archivo. El resultado y el principio de la firma no difieren de las herramientas de línea de comandos; al contrario, estas permiten un ajuste más detallado de los parámetros de firma. DigiCert® Click-to-sign ofrece solo opciones simplificadas, que sin embargo pueden ser suficientes para la mayoría de los usuarios.
DigiCert® Click-to-sign tiene una gran ventaja: para su configuración es necesario pasar por el asistente de configuración de credenciales (Secrets) para KeyLocker. El asistente no solo probará fácilmente la conexión con la nube, sino que principalmente configurará estas variables en el sistema. No tendrás que configurarlas manualmente de forma complicada.
Filar con esta herramienta es extremadamente simple: haz clic con el botón secundario del ratón en el archivo a firmar y en el menú selecciona Click to Sign. Entonces puedes firmar directamente o con confirmación de la configuración de la firma.
La documentación para Click-to-sign se encuentra en el sitio web de DigiCert.
Nota: Si Click-to-sign no funciona, establece en la variable PATH las rutas a la propia Click-to-sign y también a la aplicación de firma (Signtool) separadas por un punto y coma. Por ejemplo:
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 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 extendidas. Los plugins están disponibles para Azure DevOps, GitHub y Jenkins. Ofrecen más scripts de integración para la biblioteca PKCS11.
La información completa está disponible en el artículo CI/CD integrations.
Documentación y otros recursos:
- Documentación de SignTool, disponible en https://learn.microsoft.com/cs-cz/dotnet/framework/tools/signtool-exe
- Documentación de KeyLocker, disponible en https://docs.digicert.com/en/digicert-keylocker.html