Guía de uso de la herramienta de línea de comandos SignTool
SignTool es el cliente de línea de comandos del servicio de firma de código remota de sslTrus, utilizado para ejecutar operaciones de firma de código en la terminal o en scripts automatizados.
Inicio rápido
A continuación se muestra un ejemplo básico de comando de firma; puede copiarlo y modificarlo según los comentarios antes de usarlo:
# 视情况而定,是否需要开启调试模式
#export DEBUG=1
# 使用环境变量配置 AK、SK 以及证书订阅号
export SIGNTOOL_ACCESS_KEY='' SIGNTOOL_ACCESS_SECRET='' SIGNTOOL_CERT_CODE=''
# 签名
./signtool sign \
--dry-run \
--access-key=$SIGNTOOL_ACCESS_KEY \
--access-secret=$SIGNTOOL_ACCESS_SECRET \
--cert-code=$SIGNTOOL_CERT_CODE \
--file=app-unsigned.exe \
--out=app.exe \
--sha1=false \
--sha2=true \
--timestamp-rfc3161 http://timestamp.acs.microsoft.com
Explicación detallada del comando
Antes de comenzar, debe preparar los siguientes tres elementos de información:
Ver ayuda
Use el parámetro -h o --help para ver la ayuda completa del comando.
./signtool sign -h
Análisis de parámetros principales
| Parámetro | Abreviatura | ¿Obligatorio? | Descripción y ejemplo |
|---|---|---|---|
| --access-key | -k | Sí | Clave de acceso a la API. También se puede configurar mediante la variable de entorno SIGNTOOL_ACCESS_KEY. |
| --access-secret | -s | Sí | Secreto de acceso a la API. También se puede configurar mediante la variable de entorno SIGNTOOL_ACCESS_SECRET. |
| --cert-code | -c | Sí | Número de suscripción del servicio remoto de firma de código, utilizado para especificar el certificado de firma y la facturación. |
| --file | -f | Sí | Ruta del archivo a firmar. Por ejemplo: -f "app.dll". |
| --out | -o | No | Ruta del archivo de salida. Por defecto, se añade .signed al nombre del archivo original. Importante: si el archivo ya existe, la operación fallará. |
| --override | No | Si se debe sobrescribir la ruta del archivo a firmar. El valor predeterminado es false. | |
| --sha1 | -1 | No | Habilita la firma con algoritmo SHA1 (para compatibilidad con sistemas antiguos). |
| --sha2 | -2 | No | Habilita la firma con algoritmo SHA256 (estándar moderno, se recomienda habilitarlo). |
| --nest | No | Si se debe realizar una firma anidada. Cuando el archivo ya tiene una firma, --nest=true (predeterminado) conserva la firma original y añade una nueva; false elimina la firma antigua. Comparación de efectos: ![]() | |
| --timestamp | No | URL del servidor de sello de tiempo utilizado para la firma SHA1. Se puede deshabilitar estableciendo una cadena vacía "". | |
| --timestamp-rfc3161 | No | URL del servidor de sello de tiempo RFC 3161 utilizado para la firma SHA256. Se puede deshabilitar estableciendo una cadena vacía "". | |
| --desc | -n | No | Información descriptiva del programa. Esta información se incrusta en la firma y puede mostrarse en avisos de seguridad del sistema como el siguiente: ![]() |
| --url | -u | No | Enlace a la información oficial del programa. |
| --verify | No | Verifica inmediatamente después de firmar si la firma del archivo es válida. | |
| --dry-run | No | Modo de prueba. En este modo se utiliza un certificado autofirmado para verificar el flujo de firma; la clave de acceso y el número de suscripción correspondientes pueden rellenarse con valores arbitrarios. |
Acerca de los parámetros booleanos
Para los parámetros que aceptan valores true/false (como --sha1, --nest), se debe utilizar el formato parámetro=valor; no se admite la separación por espacios.
- Correcto: --sha1=true --sha2=false
- Incorrecto: --sha1 true --sha2 false

