Skip to main content
Version: V1.2.0

SignTool 命令行工具使用指南

SignTool 是锐安信远程代码签名服务的命令行客户端,用于在终端或自动化脚本中执行代码签名操作。

快速开始

以下是一个最基本的签名命令示例,您可以复制并根据注释修改后使用:

# 视情况而定,是否需要开启调试模式
#export DEBUG=1

# 使用环境变量配置 AK、SK 以及证书订阅号
export SIGNTOOL_ACCESS_KEY='' SIGNTOOL_ACCESS_SECRET='' SIGNTOOL_CERT_CODE=''

# 签名
./signtool sign \
-k $SIGNTOOL_ACCESS_KEY \
-s $SIGNTOOL_ACCESS_SECRET \
-c $SIGNTOOL_CERT_CODE \
-f app-unsigned.exe \
-o app.exe \
--sha1=false \
--sha2=true \
--timestamp-rfc3161 http://timestamp.acs.microsoft.com
--sha2=true # 启用SHA256签名

命令详解

在开始前,您需要准备好以下三项信息:

查看帮助

使用 -h 或 --help 参数可以查看完整的命令帮助。

./signtool sign -h

核心参数解析

参数缩写是否必填说明与示例
--access-key-kAPI访问密钥。也可通过 SIGNTOOL_ACCESS_KEY 环境变量设置。
--access-secret-sAPI访问密钥。也可通过 SIGNTOOL_ACCESS_SECRET 环境变量设置。
--cert-code-c远程代码签名服务的订阅号,用于指定签名证书和计费。
--file-f待签名文件的路径。例如:-f “app.dll”。
--out-o输出文件的路径。默认在原文件名后添加 .signed。重要:若文件已存在,操作会失败。
--sha1-1启用SHA1算法签名(用于旧系统兼容)。
--sha2-2启用SHA256算法签名(现代标准,推荐启用)。
--nest是否嵌套签名。当文件已有签名时,--nest=true(默认)会保留原签名并添加新签名;false 则会清除旧签名。效果对比如下:nest
--timestampSHA1签名使用的时间戳服务器URL。设为空字符串“”可禁用。
--timestamp-rfc3161SHA256签名使用的RFC 3161时间戳服务器URL。设为空字符串“”可禁用。
--desc-n程序描述信息。该信息会嵌入签名,并可能显示在如下的系统安全提示中:desc
--url-u程序的官方信息链接。
--verify签名后立即验证文件签名是否有效。

关于布尔值参数

对于接受 true/false 值的参数(如 --sha1, --nest),必须使用 参数=值 的格式,不支持空格分隔。

  • 正确:--sha1=true --sha2=false
  • 错误:--sha1 true --sha2 false