Guía de solución de problemas para KeyLocker
KeyLocker es una poderosa herramienta para la firma de código, que permite almacenar su certificado de firma de código en la nube y firmar de forma segura el hash de forma remota. Sin embargo, la configuración inicial tiene ciertas complicaciones, con las que este artículo ayudará.
Contenido del artículo
- Control de variables
- Control de la configuración correcta
- MMC y control de la presencia del certificado
- Problemas con la firma
- Dónde encontrar registros
- Recursos adicionales e información
Control de variables
Un paso crucial para el funcionamiento de KeyLocker en su sistema es la configuración correcta de las variables. Estas no solo determinan la ruta a las herramientas de firma, sino que principalmente contienen los datos de autenticación. Puede configurarlas para una sola sesión o de forma permanente.
Puede establecer variables en el sistema de varias formas. Además de un archivo independiente y variables, puede guardarlas en el Gestor de credenciales de Windows. Si desea firmar utilizando la GUI, puede configurarlas en la utilidad Click-to-sign, que se encuentra en la cuenta de KeyLocker (sin embargo, las variables no funcionarán a nivel del sistema).
Puede configurar fácilmente una variable en Windows usando la línea de comandos. Ejecute cmd y escriba setx VARIABLE=valor
Atención - setx trabaja con variables de usuario, no del sistema.
Para el correcto funcionamiento de KeyLocker, es necesario configurar las variables para la autenticación del cliente + la ubicación de las herramientas y bibliotecas de firma de DigiCert.
Configuración de autenticación
- SM_CLIENT_CERT_FILE - ruta a la ubicación del certificado de autenticación con extensión p12, que descargó del asistente en DigiCert ONE
- SM_HOST - dirección del host de DigiCert ONE, que es https://clientauth.one.digicert.com
Estas dos variables no son secretas, porque el certificado está protegido por una contraseña. Puede configurarlas en el sistema sin preocupación. Las dos siguientes variables sí son secretas y se recomienda no configurarlas en el sistema si tiene acceso a él más de un usuario. Es mejor guardarlas en el gestor de contraseñas de Windows. Para más información sobre la configuración de variables para Windows, consulte el artículo Configuración de credenciales para Windows.
- SM_API_KEY - clave API, que generó en la interfaz de DigiCert ONE
- SM_CLIENT_CERT_PASSWORD - contraseña para el certificado de autenticación en P12, que se mostró una sola vez en el asistente de DC1
Configuración de la ruta a herramientas de firma
Se agrega un valor a la variable PATH usando el comando setx PATH "ruta;%PATH%"
. Este comando agrega un nuevo valor a los valores de usuario existentes de la variable PATH y lo guarda de forma permanente. Para el correcto funcionamiento de KeyLocker, es necesario establecer al menos dos:
- Ruta a Windows SDK y signtool
- Ruta a DigiCert Keylocker Tools
Descubra la ruta válida a Windows SDK (la ruta usa el número de versión que tiene instalada). También necesitará DigiCert Keylocker Tools, que descargó e instaló de DigiCert ONE; los encontrará en C:\Program Files\DigiCert\DigiCert Keylocker Tools.
Agregamos ambas variables al mismo tiempo a través de CMD, de lo contrario una sobrescribirá a la otra: setx PATH "C:\Program Files\DigiCert\DigiCert Keylocker Tools\;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\;%PATH%"
Puede configurar variables del sistema también a través de la GUI de Windows; a través de CMD es más rápido, pero los valores se sobrescriben con entradas múltiples. También es posible usar PowerShell.
Cómo modificar manualmente la variable PATH en Windows
Si desea asegurarse de que los valores se conserven, puede modificar PATH manualmente:
- Abra Panel de control → Sistema → Configuración avanzada del sistema.
- Haga clic en Variables de entorno.
- Encuentre PATH (en Variables del sistema o Variables de usuario).
- Haga clic en Editar, agregue las rutas individuales y guarde.

Cómo agregar la variable PATH usando PowerShell
Si desea agregar permanentemente una ruta a la variable PATH usando PowerShell, siga los siguientes pasos:
- Abra PowerShell como administrador (haga clic derecho en Inicio → Windows PowerShell (Admin)).
- Primero, descubra el valor actual de la variable "PATH":
- Luego, agregue la nueva ruta a los valores existentes:
- Si necesita agregar otra ruta, repita el proceso:
- Después de ejecutar los comandos, reinicie el símbolo del sistema o la computadora para que se reflejen los cambios.
[System.Environment]::GetEnvironmentVariable("Path", "User")
$path = [System.Environment]::GetEnvironmentVariable("Path", "User")
$newPath = $path + ";C:\Program Files\DigiCert\DigiCert Keylocker Tools\"
[System.Environment]::SetEnvironmentVariable("Path", $newPath, "User")
$newPath = $newPath + ";C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\"
[System.Environment]::SetEnvironmentVariable("Path", $newPath, "User")
Nota: Si desea cambiar la variable de sistema "PATH" (válida para todos los usuarios), reemplace "User" por "Machine" en el comando.
Comprobación del valor de la variable en cmd:
echo %VARIABLE%
Por ejemplo, "echo %PATH%". Luego, cmd le mostrará su valor.
Control de la configuración correcta
Las herramientas de KeyLocker incluyen la utilidad smctl, que puede usar para firmar, pero también se usa para diagnóstico básico. El siguiente comando verificará si todo está bien configurado en su estación y si smctl puede conectarse con la nube de DigiCert:
smctl healthcheck
En el informe verá confirmación de si se ha conectado a KeyLocker (funciona la autenticación) y si smctl detecta la presencia de herramientas de firma, como signtool. Ejemplo:
smctl healthcheck
--------- Configuración de la cuenta ---------
Equipos: Deshabilitado
Detección de amenazas: Habilitado
Análisis Binario Estático: Habilitado
Análisis de Composición de Software: Deshabilitado
--------- Credenciales del usuario ---------
Estado: Conectado
Nombre de usuario: XXXX-keylocker
Cuentas: XXXX-1699076
Autenticación: 2FA
Entorno: Prod
Credenciales:
Host: https://clientauth.one.digicert.com
Clave API: 010897bf735bbc57d48270cd3d_50dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe4 (Obtenido de la variable de entorno)
Ruta del archivo de certificado de cliente: C:\Users\xy\Documents\keylocker\Certificate_pkcs12.p12
Contraseña del certificado de cliente: ytf_xxxxxx0F (Obtenido de la variable de entorno)
Claves API:
Nombre: xy (expira el Lun, 31 Dic 2029 23:59:59 UTC)
Certificados de cliente:
Nombre: xy (expira el Lun, 31 Dic 2029 23:59:59 UTC)
Privilegios:
Puede firmar: Sí
Puede aprobar liberación sin conexión: No
Puede revocar certificado: Sí
Puede escanear: No
Permisos:
Gestor de Cuentas:
MANAGE_AM_PERMISSION
MANAGE_AM_ROLE
MANAGE_AM_ACCOUNT_USER
VIEW_AM_ROLE
VIEW_AM_ACCOUNT
VIEW_AM_USER
VIEW_AM_ORGANIZATION
VIEW_AM_AUDIT_LOG
Pares de claves:
SIGN_SM_HASH
VIEW_SM_KEYPAIR
MANAGE_SM_KEYPAIR
Certificados:
VIEW_SM_CERTIFICATE
REVOKE_SM_CERTIFICATE
Otros permisos:
VIEW_SM_LICENSE
MANAGE_SM_CC_API_KEY
--------- Herramientas de firma ---------
Herramienta de firma 32 bits:
Mapear: No
Herramienta de firma:
Mapear: Sí
Ruta: C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\signtool.exe
Mage:
Mapear: No
Nuget:
Mapear: No
Jarsigner:
Mapear: No
Apksigner:
Mapear: No
Si hay un problema con la autenticación, verifique que haya configurado los valores correctos que obtuvo en el asistente de KeyLocker en la interfaz de DigiCert ONE. Si tiene dudas, puede restablecer el asistente y crear nuevas credenciales.
También puede encontrar que smctl no detecta signtool u otras herramientas de firma. Esto significa que es necesario agregar su ubicación a la variable PATH de usuario o del sistema. Vea arriba en la sección sobre variables.
MMC y control de la presencia del certificado
Si trabaja en Windows, mire en el gestor de certificados, que se ejecuta con el comando certmgr.msc. Si la sincronización con KeyLocker se realiza correctamente, verá un certificado con la advertencia de clave privada en el almacén de certificados. Sin embargo, esto no significa que esté realmente con la clave privada allí; el certificado con clave privada se guarda todavía en la nube.
Si el certificado no está allí, ejecute la sincronización.
smctl windows certsync
Si la sincronización es exitosa verá la confirmación:
Sincronizando certificado para el alias: key_1236506290, ID: ac793b6d-cac4-4be4-b145-003d4d1d63db y Huella SHA1: 54d0c7a2d93ae4d5fccb41d97c51a8ab3581c72c
Problemas con la firma
Si tiene problemas para firmar, intente ir de lo más general a lo más complejo. Lo más sencillo es firmar utilizando la utilidad smctl de DigiCert, que puede servir como superposición tanto para herramientas de firma como signtool o jarsigner. Este es el modo menos conflictivo y no requiere ningún parámetro. Para solucionar problemas, no use marca de tiempo ni otras opciones.
Puede firmar fácilmente con smctl: smctl sign --keypair-alias=key_1234567890 --input C:\Users\John.Doe\Desktop\file_to_sign.exe
Puede referirse al certificado utilizando el parámetro "keypair-alias" o "fingerprint", esta información sobre el certificado la puede encontrar, por ejemplo, con el comando smctl windows certsync.
Después de firmar, puede verificar la firma: smctl sign verify --input
La ayuda para firmar se encuentra en el artículo Sign binaries with SMCTL.
Después de firmar con éxito utilizando smctl, puede firmar con otra herramienta, como signtool. También debería funcionar. Deje la selección de certificados automática y agregue gradualmente otros parámetros.
Una vez que funcione satisfactoriamente según sus expectativas, puede intentar firmar, por ejemplo, usando Visual Studio o en otro entorno de desarrollo.
Dónde encontrar registros
Si todo lo anterior falla y la firma no funciona, recomiendo echar un vistazo a los registros de smctl y otras herramientas de DigiCert. Si usa los registros al resolver un problema con nuestro soporte, seguramente acelerará la solución del problema.
El registro de la utilidad smctl se encuentra en el archivo smctl.log, que estará ubicado en la carpeta /.signingmanager/logs en el perfil de usuario correspondiente. Intente escribir en cmd echo %USERPROFILE%/.signingmanager/logs
y verá la ubicación completa de la carpeta.
Recursos adicionales e información
- Errores más comunes - Guía de solución de problemas en la documentación de KeyLocker.
- Documentación de KeyLocker en el sitio de DigiCert
Lo sentimos que no haya encontrado lo necesario aquí.
Ayúdanos mejorar el artículo, por favor. Escríbenos lo que esperaba aquí y no encontró.