SignTool

SignTool (Signtool.exe) — это средство командной строки CryptoAPI , которое подписывает файлы цифровой подписью, проверяет подписи в файлах и файлы меток времени.

    SignTool [Operation] [Options] [FileName ...]

Частичный список операций, параметров и аргументов

Operations

catdb
Настраивает SignTool для обновления базы данных каталога. SignTool добавляет файлы каталога в базу данных или удаляет каталоги из базы данных. По умолчанию команда catdb добавляет файлы, имена которых указаны аргументом FileName , в базу данных системного компонента (драйвера).

Примечание

Базы данных каталога используются для автоматического поиска файлов каталога.

sign
Настраивает SignTool для цифровой подписи файлов, имена которых задаются аргументом FileName .

timestamp
Настраивает SignTool для метки времени для файлов, имена которых задаются аргументом FileName .

verify
Настраивает SignTool для проверки цифровой подписи файлов, имена которых задаются аргументом FileName .

Параметры операции Catdb

/d
Настраивает SignTool для обновления базы данных каталога. Если ни параметр /d , ни /g не используется, SignTool обновляет системный компонент и базу данных драйверов.

/gGuid
Настраивает SignTool для обновления базы данных каталога, определяемой аргументом GUID .

/R
Настраивает SignTool для удаления всех файлов каталога, имена которых указаны аргументом FileName , из базы данных каталога. Если этот параметр не указан, SignTool добавляет указанные файлы каталога в базу данных каталога.

/u
Настраивает SignTool, чтобы при необходимости создать уникальное имя для файла каталога, чтобы предотвратить конфликт с существующим файлом каталога в базе данных каталога. Если этот параметр не указан, SignTool перезаписывает любой существующий каталог с тем же именем, что и добавляемый каталог.

Параметры операции подписи

/a Настраивает SignTool для автоматического выбора лучшего сертификата подписи. Если этот параметр отсутствует, SignTool ожидает найти только один сертификат подписи.

/acCrossCertFileName
Указывает имя файла кросс-сертификата, который используется с сертификатом издателя программного обеспечения (SPC), который называется CertificateName и устанавливается в хранилище сертификатов StoreName. Этот параметр следует использовать только в том случае, если сертификат подписи является SPC.

/cCertTemplateName
Указывает имя шаблона сертификата (расширение Microsoft) для сертификата подписи.

/cspCSPName
Указывается поставщик служб шифрования (CSP), содержащий контейнер закрытого ключа.

/dDesc
Задает описание подписанного содержимого.

URL-адрес/du
Указывает URL-адрес для развернутого описания подписанного содержимого.

/fSignCertFile
Задает сертификат подписи в файле. Поддерживается только формат PFX-файлов. Вы можете использовать средство Pvk2Pfx для преобразования файлов SPC и PVK в формат PFX.

Если файл имеет формат PFX, защищенный паролем, используйте параметр /p , чтобы указать пароль. Если файл не содержит закрытых ключей, используйте параметры /csp и /k , чтобы указать CSP и имя контейнера закрытого ключа соответственно.

/Fd
Задает алгоритм хэш-кода файла, который будет использоваться при создании подписей файлов. Значение по умолчанию - SHA1.

/iIssuerName
Задает имя поставщика сертификата подписи. Это значение может быть подстрокой полного имени поставщика.

/jDLL
Указывает имя библиотеки DLL, предоставляющей атрибуты подписи.

/jpParameterName
Указывает параметр, передаваемый в библиотеку DLL, указанную командой /j .

/kcPrivKeyContainerName
Указывает имя контейнера ключей закрытого ключа.

/nSubjectName
Задает имя субъекта сертификата подписи. Это значение может быть подстрокой полного имени субъекта.

/nph
Если поддерживается, отключает хэши страниц для исполняемых файлов. Значение по умолчанию определяется переменной среды SIGNTOOL_PAGE_HASHES и версией файла "wintrust.dll". Этот параметр игнорируется для файлов, отличных от PE-файлов.

Пароль /p
Задает пароль, который используется при открытии PFX-файла. PFX-файл можно указать с помощью параметра /f .

Путь/p7
Указывает, что для каждого заданного файла содержимого создается файл PKCS #7. Файлы PKCS #7 имеют имена вида path\filename.p7.

Значение /p7ce
Задает параметры для подписанного содержимого PKCS #7. Задайте значение Value как "Embedded", чтобы внедрить подписанное содержимое в файл PKCS #7, или как "DetachedSignedData", чтобы создать подписанную часть данных отсоединенного файла PKCS #7. Если параметр /p7ce не используется, подписанное содержимое внедряется по умолчанию.

/p7coOID
Задает идентификатор объекта (OID), определяющий подписанное содержимое PKCS #7.

/Ph Если поддерживается, создает хэши страниц для исполняемых файлов.

/rRootSubjectName
Указывает имя субъекта корневого сертификата, к которому должен быть приложен сертификат подписи. Это значение может быть подстрокой полного имени субъекта корневого сертификата.

/sStoreName
Указывает имя хранилища сертификатов, которое будет открываться при поиске сертификата, используемого для подписи файлов. Если этот параметр не указан, открывается хранилище моих сертификатов.

/sha1Hash
Задает хэш SHA1 сертификата подписи.

/Sm
Настраивает SignTool для использования хранилища сертификатов компьютера вместо хранилища сертификатов пользователя.

URL-адрес/t
Указывает URL-адрес сервера меток времени. Если этот параметр не указан, подписанный файл не имеет метки времени. Файл каталога или файл драйвера должен иметь метку времени, так как если ключ подписывающего скомпрометирован, метка времени предоставляет сведения, необходимые для отзыва ключа, который использовался для подписания файла.

/tdalg
Используется с параметром /tr для запроса алгоритма дайджеста, используемого сервером метки времени RFC 3161.

URL-адрес/tr
Задает URL-адрес сервера отметок времени RFC 3161. Если этот параметр (или /t) отсутствует, подписанный файл не будет иметь метку времени. Если присвоение отметки времени не удалось, выдается предупреждение. Этот параметр нельзя использовать с параметром /t .

/uUsage
Задает расширенное использование ключа (EKU), которое должно быть представлено в сертификате подписи. Значение использования может быть задано идентификатором объекта или строкой. По умолчанию используется подписывание кода (1.3.6.1.5.5.7.3.3).

/Uw Указывает использование проверки системных компонентов Windows (1.3.6.1.4.1.311.10.3.6).

Параметры операции с меткой времени

/p7 Метки времени — файлы PKCS #7.

URL-адрес/t
Указывает URL-адрес сервера меток времени. Файл с меткой времени должен быть подписан ранее

/tdalg
Запрашивает алгоритм хэш-кода, используемый сервером отметок времени RFC 3161. Параметр /td используется с параметром /tr .

Индекс /tp
Присваивает подписи метку времени в index.

/tralg
Запрашивает алгоритм хэш-кода, используемый сервером отметок времени RFC 3161. Параметр /td используется с параметром /tr .

Проверка параметров операции

/a
Указывает, что все методы могут использоваться для проверки файла. Сначала выполняется поиск в базах данных каталогов, чтобы определить, подписан ли файл в каталоге. Если файл не выполнен ни в одном каталоге, SignTool пытается проверить внедренную подпись файла. Этот параметр рекомендуется использовать при проверке файлов, которые могут быть подписаны или не подписаны в каталоге.

/Объявление
Указывает, что поиск каталога, в который был выполнен вход, выполняется только в базе данных каталога по умолчанию.

/all
Проверяет все подписи в файле, содержащем несколько подписей.

/Как
Указывает, что только в базе данных каталога системных компонентов (драйверов) выполняется поиск каталога, в который был выполнен вход в файл.

/agCatDBGUID
Указывает, что только в базе данных каталога, определяемой с помощью аргумента CatDBGUID , выполняется поиск каталога, в который был выполнен вход в файл.

/cCatalogFileName
Указывает имя файла каталога.

/D Указывает, что средство подписи должно вывести описание и URL-адрес описания.

Индекс /ds
Проверяет подпись в указанной позиции.

/hash {SHA1|SHA256}
Задает необязательный алгоритм хэширования, который должен использоваться при поиске файла в каталоге.

/Кп
Настраивает SignTool, чтобы убедиться, что цифровая подпись каждого файла, указанного аргументом FileName , соответствует политике подписывания кода в режиме ядра и требованиям к подписи установки устройства PnP в Windows Vista и более поздних версиях Windows. Если этот параметр не указан, SignTool только проверяет, соответствует ли подпись требованиям к подписи для установки устройства PnP.

/Ms
Использует несколько семантик проверки. Это поведение по умолчанию при вызове функции WinVerifyTrust для Windows 8 и более поздних версий.

Версия/o
Проверяет файл в версии операционной системы. Формат аргумента VersionPlatformID:VerMajor.VerMinor.BuildNumber.

Рекомендуется использовать параметр /o . Если параметр /o не указан, SignTool может возвращать непредвиденные результаты. Например, если параметр /o не включен, системные каталоги, которые правильно проверяются в более старых операционных системах, могут быть неправильно проверены в более новой операционной системе.

/p7
Проверяет файлы PKCS #7. Существующие политики не используются для проверки PKCS #7. Подпись проверяется, и для сертификата подписи строится цепочка.

/Pa
Настраивает SignTool, чтобы убедиться, что цифровая подпись каждого файла, указанного аргументом FileName , соответствует требованиям к подписи установки устройства PnP.

Примечание

Этот параметр нельзя использовать с параметрами catdb .

/pgPolicyGUID
Задает политику проверки по идентификатору GUID. Идентификатор PolicyGUID соответствует идентификатору ActionID политики проверки.

Примечание

Этот параметр нельзя использовать с параметрами catdb .

/Ph Указывает, что средство подписи должно выводить и проверять хэш-значения страницы.

/rRootSubjectName
Указывает имя субъекта корневого сертификата, к которому должен привязаться сертификат подписи. Это значение может быть подстрокой полного имени субъекта корневого сертификата.

/Tw
Указывает, что если сигнатура не имеет метки времени, создается предупреждение.

Общие параметры

/q
Настраивает SignTool так, чтобы не отображались выходные данные при успешном выполнении и минимальные выходные данные для неудачного выполнения.

/v
Настраивает SignTool для отображения подробной версии операций и предупреждающих сообщений.

/?
Настраивает SignTool для отображения справочных сведений в командном окне.

Имени файла...
Указывает список из одного или нескольких имен файлов. В зависимости от команды SignTool подпишет указанные файлы, метку времени или проверит. Если используется команда catdb , SignTool добавит или удалит указанные файлы из базы данных каталога.

Для команд знака, метки времени и проверки файл может быть файлом каталога для пакета драйверов или файлом драйвера.

Для команды catdb файл должен быть файлом каталога для пакета драйвера.

Комментарии

SignTool поддерживает большое количество параметров. Параметры, описанные в этом разделе, ограничены теми, которые можно использовать для подписывания или проверки пакета драйвера или файла драйвера.

Полный список параметров SignTool см. на веб-сайте Microsoft SignTool .

Дополнительные сведения о подписи файлов см. на веб-сайте Microsoft Cryptography Tools .

32-разрядная версия SignTool находится в папке bin\i386 WDK. 64-разрядная версия средства находится в папках bin\amd64 и bin\ia64 в WDK.

Примеры

Ниже приведен пример подписывания файла каталога пакета драйверов с помощью сертификата издателя программного обеспечения (SPC) и соответствующего кросс-сертификата. Этот пример допустим для подписывания пакета драйверов для 64-разрядных версий Windows Vista и более поздних версий Windows, которые применяют политику подписывания кода в режиме ядра. В этом примере файл каталога пакета драйвера подписывается AbcCatFileName.cat. Для подписи файла каталога в примере используются сертификаты AbcCrossCertificate и AbcSPCCertificate. Сертификат AbcSPCCertificate находится в хранилище сертификатов AbcCertificateStore.

В примере также используется общедоступный сервер меток времени для подписывания файла каталога. Сервер метки времени предоставляется DigiCert, а его URL-адрес — http://timestamp.digicert.com.

SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcCatFileName.cat

Ниже приведен пример внедрения подписи в файл драйвера с помощью SPC и кросс-сертификата. Все параметры такие же, как в примере, который подписывает файл каталога, за исключением того, что подписанный файл AbcDriverFile.sys вместо файла каталога AbcCatFileName.cat.

SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcDriverFile.sys

Ниже приведен пример подписывания файла каталога пакета драйвера с помощью коммерческого сертификата выпуска или коммерческого тестового сертификата. Этот пример допустим для подписывания пакета драйверов для 32-разрядных версий Windows Vista и более поздних версий Windows, которые не применяют политику подписывания кода в режиме ядра. Пример подписывает файл каталога пакета драйверов CatalogFileName.cat. В примере используется тестовый сертификат AbcTestCertificate, расположенный в хранилище сертификатов TestCertificateStore, для подписи файла каталога.

В примере также используется общедоступный сервер меток времени для подписывания файла каталога. Сервер метки времени предоставляется DigiCert, а его URL-адрес — http://timestamp.digicert.com.

SignTool sign /s TestCertificateStore /n AbcTestCertificate /t http://timestamp.digicert.com CatalogFileName.cat

Примеры проверки

Ниже приведен пример проверки соответствия подписи файла каталога пакета драйверов политике подписывания кода в режиме ядра и требованиям к подписи установки устройства PnP. В примере проверяется сигнатура файла каталога AbcCatalogFile.cat.

SignTool verify /kp CatalogFileName.cat

Ниже приведен пример того, как убедиться, что подпись файла, указанного в файле каталога пакета драйверов, соответствует политике подписывания кода в режиме ядра и требованиям к подписи установки устройства PnP. В примере проверяется подпись файла AbcDriverPackage.inf, который должен содержать запись отпечатка в файле каталога CatalogFileName.cat.

SignTool verify /kp /c CatalogFileName.cat AbcDriverPackage.inf

Ниже приведен пример проверки соответствия внедренной сигнатуры политике подписывания кода в режиме ядра в Windows Vista и более поздних версиях Windows. В примере проверяется сигнатура, внедренная в файл драйвера AbcDriverFile.sys.

SignTool verify /kp AbcDriverFile.sys

Ниже приведен пример проверки того, что сигнатура файла каталога пакета драйверов соответствует требованиям к подписи для установки устройства PnP. В примере проверяется сигнатура файла каталога CatalogFileName.cat.

SignTool verify /pa CatalogFileName.cat

Пример добавления файла каталога в базу данных системного компонента (драйвера)

Ниже приведен пример использования SignTool для добавления файла каталога CatalogFileName.cat в базу данных системного компонента (драйвера). Параметр /v настраивает SignTool для работы в подробном режиме, а параметр /u настраивает SignTool на создание уникального имени добавляемого файла каталога, чтобы предотвратить замену уже существующего файла каталога с тем же именем, что и CatalogFileName.cat.

SignTool catdb /v /u CatalogFileName.cat