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 remota de código de sslTrus, diseñado para ejecutar operaciones de firma de código en terminales o scripts de automatización.

Inicio rápido​

A continuación se muestra un ejemplo del comando de firma más básico, que puede copiar y modificar 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 empezar, debe preparar los tres datos siguientes:

Consultar la ayuda​

Utilice el parámetro -h o --help para consultar la ayuda completa del comando.

./signtool sign -h

Explicación de los parámetros principales​

ParámetroAbreviatura¿Obligatorio?Descripción y ejemplo
--access-key-kSíClave de acceso a la API. También se puede configurar mediante la variable de entorno SIGNTOOL_ACCESS_KEY.
--access-secret-sSíClave de acceso a la API. También se puede configurar mediante la variable de entorno SIGNTOOL_ACCESS_SECRET.
--cert-code-cSíNúmero de suscripción del servicio de firma de código remoto, utilizado para especificar el certificado de firma y la facturación.
--file-fSíRuta 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 sobrescribe la ruta del archivo a firmar. El valor por defecto es false.
--sha1-1NoHabilita la firma con algoritmo SHA1 (para compatibilidad con sistemas antiguos).
--sha2-2NoHabilita la firma con algoritmo SHA256 (estándar moderno, recomendado).
--nestNoSi se realiza una firma anidada. Cuando el archivo ya tiene una firma, --nest=true (por defecto) conserva la firma original y añade una nueva; false elimina la firma anterior. Comparación de efectos: nest
--timestampNoURL del servidor de sellado de tiempo utilizado para la firma SHA1. Establecer como cadena vacía "" para deshabilitar.
--timestamp-rfc3161NoURL del servidor de sellado de tiempo RFC 3161 utilizado para la firma SHA256. Establecer como cadena vacía "" para deshabilitar.
--desc-nNoInformación de descripción 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 de información oficial del programa.
--verifyNoVerifica inmediatamente si la firma del archivo es válida después de firmar.
--dry-runNoModo de prueba. En este modo se utiliza un certificado autofirmado para verificar el proceso de firma; la clave de acceso y el número de suscripción correspondientes se pueden rellenar arbitrariamente.

Acerca de los parámetros booleanos​

Para los parámetros que aceptan valores true/false (como --sha1, --nest), se debe usar el formato parámetro=valor; no se admite la separación por espacios.

  • Correcto: --sha1=true --sha2=false
  • Incorrecto: --sha1 true --sha2 false