Руководство по использованию утилиты командной строки 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 | Нет | URL сервера штампов времени, используемый для подписи SHA1. Чтобы отключить, задайте пустую строку "". | |
| --timestamp-rfc3161 | Нет | URL RFC 3161 сервера штампов времени, используемый для подписи SHA256. Чтобы отключить, задайте пустую строку "". | |
| --desc | -n | Нет | Описание программы. Эта информация будет встроена в подпись и может отображаться в системном предупреждении безопасности, как показано ниже: ![]() |
| --url | -u | Нет | Официальная ссылка на информацию о программе. |
| --verify | Нет | Сразу после подписи проверить, действительна ли подпись файла. | |
| --dry-run | Нет | Тестовый режим. В этом режиме для проверки процесса подписи используется самоподписанный сертификат; соответствующие ключ доступа и номер подписки можно указать произвольно. |
О параметрах логического типа
Для параметров, принимающих значения true/false (например, --sha1, --nest), необходимо использовать формат параметр=значение; разделение пробелом не поддерживается.
- Правильно: --sha1=true --sha2=false
- Неправильно: --sha1 true --sha2 false

