Поделиться через


SignTool

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

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

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

Операции

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/u Использование
Задает расширенное использование ключа (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 файлов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

Примечание.

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

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

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

/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

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

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

SignTool catdb /v /u CatalogFileName.cat