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 | -k | 是 | API访问密钥。也可通过 SIGNTOOL_ACCESS_KEY 环境变量设置。 |
| --access-secret | -s | 是 | API访问密钥。也可通过 SIGNTOOL_ACCESS_SECRET 环境变量设置。 |
| --cert-code | -c | 是 | 远程代码签名服务的订阅号,用于指定签名证书和计费。 |
| --file | -f | 是 | 待签名文件的路径。例如:-f “app.dll”。 |
| --out | -o | 否 | 输出文件的路径。默认在原文件名后添加 .signed。重要:若文件已存在,操作会失败。 |
| --sha1 | -1 | 否 | 启用SHA1算法签名(用于旧系统兼容)。 |
| --sha2 | -2 | 否 | 启用SHA256算法签名(现代标准,推荐启用)。 |
| --nest | 否 | 是否嵌套签名。当文件已有签名时,--nest=true(默认)会保留原签名并添加新签名;false 则会清除旧签名。效果对比如下:![]() | |
| --timestamp | 否 | SHA1签名使用的时间戳服务器URL。设为空字符串“”可禁用。 | |
| --timestamp-rfc3161 | 否 | SHA256签名使用的RFC 3161时间戳服务器URL。设为空字符串“”可禁用。 | |
| --desc | -n | 否 | 程序描述信息。该信息会嵌入签名,并可能显示在如下的系统安全提示中:![]() |
| --url | -u | 否 | 程序的官方信息链接。 |
| --verify | 否 | 签名后立即验证文件签名是否有效。 |
关于布尔值参数
对于接受 true/false 值的参数(如 --sha1, --nest),必须使用 参数=值 的格式,不支持空格分隔。
- 正确:--sha1=true --sha2=false
- 错误:--sha1 true --sha2 false

