Перейти к основному содержимому

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

О параметрах логического типа

Для параметров, принимающих значения true/false (например, --sha1, --nest), необходимо использовать формат параметр=значение; разделение пробелом не поддерживается.

  • Правильно: --sha1=true --sha2=false
  • Неправильно: --sha1 true --sha2 false