SignTool 命令列工具使用指南
SignTool 是 sslTrus 遠端程式碼簽章服務的命令列用戶端,用於在終端機或自動化指令碼中執行程式碼簽章作業。
快速開始
以下是一個最基本的簽章指令範例,您可以複製並根據註解修改後使用:
# 视情况而定,是否需要开启调试模式
#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
命令詳解
在開始前,您需要準備好以下三項資訊:
檢視說明
使用 -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。重要:若檔案已存在,操作會失敗。 |
| --override | 否 | 是否覆蓋待簽章檔案的路徑。預設為 false。 | |
| --sha1 | -1 | 否 | 啟用 SHA1 演算法簽章(用於舊系統相容)。 |
| --sha2 | -2 | 否 | 啟用 SHA256 演算法簽章(現代標準,建議啟用)。 |
| --nest | 否 | 是否巢狀簽章。當檔案已有簽章時,--nest=true(預設)會保留原簽章並新增新簽章;false 則會清除舊簽章。效果對比如下:![]() | |
| --timestamp | 否 | SHA1 簽章使用的時間戳記伺服器 URL。設為空字串""可停用。 | |
| --timestamp-rfc3161 | 否 | SHA256 簽章使用的 RFC 3161 時間戳記伺服器 URL。設為空字串""可停用。 | |
| --desc | -n | 否 | 程式描述資訊。該資訊會嵌入簽章,並可能顯示在如下的系統安全性提示中:![]() |
| --url | -u | 否 | 程式的官方資訊連結。 |
| --verify | 否 | 簽章後立即驗證檔案簽章是否有效。 | |
| --dry-run | 否 | 試用模式。該模式下將使用自簽憑證驗證簽章流程,對應的存取金鑰和訂閱號可隨意填寫。 |
關於布林值參數
對於接受 true/false 值的參數(如 --sha1, --nest),必須使用 參數=值 的格式,不支援空格分隔。
- 正確:--sha1=true --sha2=false
- 錯誤:--sha1 true --sha2 false

