Saltar al contenido principal

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ámetroAbreviatura¿Obligatorio?Descripción y ejemplo
--access-key-kClave de acceso a la API. También se puede configurar mediante la variable de entorno SIGNTOOL_ACCESS_KEY.
--access-secret-sSecreto de acceso a la API. También se puede configurar mediante la variable de entorno SIGNTOOL_ACCESS_SECRET.
--cert-code-cNúmero de suscripción del servicio remoto de firma de código, utilizado para especificar el certificado de firma y la facturación.
--file-fRuta del archivo a firmar. Por ejemplo: -f "app.dll".
--out-oNoRuta 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á.
--overrideNoSi se debe sobrescribir la ruta del archivo a firmar. El valor predeterminado es false.
--sha1-1NoHabilita la firma con algoritmo SHA1 (para compatibilidad con sistemas antiguos).
--sha2-2NoHabilita la firma con algoritmo SHA256 (estándar moderno, se recomienda habilitarlo).
--nestNoSi 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: nest
--timestampNoURL del servidor de sello de tiempo utilizado para la firma SHA1. Se puede deshabilitar estableciendo una cadena vacía "".
--timestamp-rfc3161NoURL del servidor de sello de tiempo RFC 3161 utilizado para la firma SHA256. Se puede deshabilitar estableciendo una cadena vacía "".
--desc-nNoInformación descriptiva del programa. Esta información se incrusta en la firma y puede mostrarse en avisos de seguridad del sistema como el siguiente: desc
--url-uNoEnlace a la información oficial del programa.
--verifyNoVerifica inmediatamente después de firmar si la firma del archivo es válida.
--dry-runNoModo 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