Использование сертификата подписи кода –

Использование сертификата подписи кода - Сертификаты

Catdb command options

The following table lists the options that can be used with the catdb command.

Catdb optionDescription
/dSpecifies that the default catalog database is updated. If neither the /d nor the /g option is used, Sign Tool updates the system component and driver database.
/gGUIDSpecifies that the catalog database identified by the globally unique identifier GUID is updated.
/rRemoves the specified catalogs from the catalog database. If this option is not specified, Sign Tool adds the specified catalogs to the catalog database.
/uSpecifies that a unique name is automatically generated for the added catalog files. If necessary, the catalog files are renamed to prevent name conflicts with existing catalog files. If this option is not specified, Sign Tool overwrites any existing catalog that has the same name as the catalog being added.

Examples

The following command adds the catalog file MyCatalogFileName.cat to the system component and driver database. The /u option generates a unique name if necessary to prevent replacing an existing catalog file named MyCatalogFileName.cat.

The following command signs a file automatically by using the best certificate.

The following command digitally signs a file by using a certificate stored in a password-protected PFX file.

The following command digitally signs and time-stamps a file. The certificate used to sign the file is stored in a PFX file.

The following command signs a file by using a certificate located in the My store that has a subject name of My Company Certificate.

Parameters

ArgumentDescription
commandOne of four commands (catdb, sign, Timestamp, or Verify) that specifies an operation to perform on a file. For a description of each command, see the next table.
optionsAn option that modifies a command. In addition to the global /q and /v options, each command supports a unique set of options.
file_nameThe path to a file to sign.

The following commands are supported by Sign Tool. Each command is used with distinct sets of options, which are listed in their respective sections.

Return value

Sign Tool returns one of the following exit codes when it terminates.

Exit codeDescription
0Execution was successful.
1Execution has failed.
2Execution has completed with warnings.

Sign command options

The following table lists the options that can be used with the sign command.

Start powershell

Начать Powershell командное окно, выполнив поиск «Powershell» в Start меню и нажав на рабочем столе приложения.

Powershell – это интерфейс командной строки для основных служб Windows. Вы можете использовать его для выполнения SignTool и подписания кода.

Timestamp command options

The following table lists the options that can be used with the TimeStamp command.

TimeStamp optionDescription
/p7Time stamps PKCS #7 files.
/tURLSpecifies the URL of the time stamp server. The file being time stamped must have previously been signed. Either the /t or the /tr option is required.
/tdalgUsed with the /tr option to request a digest algorithm used by the RFC 3161 time stamp server.
Note: A warning is generated if the /td switch is not provided while timestamping. The default algorithm is SHA1, but SHA256 is recommended.
The /td switch must be declared after the /tr switch, not before. If the /td switch is declared before the /tr switch, the timestamp that is returned is from the SHA1 algorithm instead of the intended SHA256 algorithm.
/tpindexTime stamps the signature at index.
/trURLSpecifies the URL of the RFC 3161 time stamp server. The file being time stamped must have previously been signed. Either the /tr or the /t option is required.

For a usage example, see Adding Time Stamps to Previously Signed Files.

Verify command options

For usage examples, see Using SignTool to Verify a File Signature.

Про сертификаты:  Сервер отзыва сертификатов недоступен

Войти исполнимый

Вы можете подписать исполняемый файл, введя следующую команду в окне Powershell.

.  signtool.exe sign / fd sha256 / a "C:  path  to  MyExecutable.exe"

Примечание: Если вы подписываете файлы кода, которые будут включены в установщик (например, файл Windows MSI), вам нужно будет подписать эти файлы перед сборкой установщика, а затем подписать сам файл установщика.

Все о подписи драйверов windows

Как известно в х64 битных платформах была введена процедура обязательной цифровой подписи всего того, что может попасть в ядро системы, а именно драйверов. О том, на сколько это эффективно и оправданно можно долго спорить, но только одно можно сказать точно — гимора разработчикам тут определенно добавилась, особенно тем, кто раньше никогда подписями не занимался. Также для многих стало крайне не очевидно, каким образом разрабатывать драйвер, когда нет на руках валидного сертификата, а тестировать ведь как-то надо. Вот сча я попытаюсь в краткой и доступной форме рассказать о том как это все делается.

Итак, прежде всего, я бы хотел выделить два типа сертификатов, которые я буду рассматривать в рамках данной статьи — тестовый и настоящий. Разница состоит в том, что настоящий сертификат подписан доверенным CA (Certification Authorities — доверенный издатель), типа VeriSign, GlobalSign ну или самим Microsoft, а тестовый подписан самопальным сертификатом типа от Васи Пупкина.

Тестовый сертификат
Как вы уже наверное догадались, именно с помощью этого типа сертификата можно спокойно разрабатывать драйвер, не имея на руках настоящего, но все не так просто, прежде чем его использовать надо проделать некоторые унылые и мудреные мероприятия:

  1. Сгенерить сам сертификат и установить его. Это можно сделать с помощью тулзы makecert, например так: 

    Makecert -r -pe -ss PrivateCertStore -n "CN=TestCertforWDK" TestCert.cer
    где
    PrivateCertStore — название хранилища
    TestCertforWDK — название самого сертификата
    TestCert.cer — имя файла с сертификатом
    (эта тулза входит в комплект WDK 6000/6001 и расположена bin/SelfSign, в WDK 7600 она почему то не входит…)
  2. Добавить этот сертификат в хранилище с доверенным корневыми CA. Открываем в mmc консоль Сертификаты (Run->mmc->File->Add/Remove Snap-in->Certificates) там находим свой сертификат (например в хранилище PrivateCertStore), копируем его в доверенные корневые издатели (Trusted Root Certification Authorities).
  3. Разрешить тестовые подписи. Для этого прописываем в администраторской консоли:
    bcdedit.exe –set TESTSIGNING ON
    и перезагружаемся, в итоге на десктопе, после перезагрузки, по углам красоваться соответствующие надписи.
    image

Настоящий сертификат
Тут тоже не все так просто. Дело в том, что не любой CA может выдавать сертификаты для подписи драйверов Windows, а только те, которые авторизованы самой Microsoft, это значит, что корневые сертификаты этих издателей должны быть подписаны Microsoft — что, как раз и выражается в виде этого кросс-сертификата. Вот именно из-за отсутствия кросс-сертификата — тестовая подпись, никогда не будет работать как настоящая. Список доверенных CA, которые обладают такими кросс-сертификатами — представлен тут, там же можно скачать и сами кросс-сертификаты.
После того, как вы выложите несколько сотенок $$$ доверенному центру сертификации, они выдадут вам .pfx файл в котором будут содержаться публичный и приватный ключи. Вы его запустите и с помощью нехитрого диалога (как на рисунке ниже), установите в систему.
image

Подпись драйвера
Процесс подписи для тестового и настоящего сертификата во многом похожи, различия состоят лиш в том, что:

Итак приступим

  1. Качаем тулзу для подписи — signtool (тоже входит в комплект WDK6000/6001)
  2. Подписываем, с тестовым сертификатом:
    signtool sign /v /s PrivateCertStore /n "TestCertforWDK" driver.sys
    где
    PrivateCertStore — имя хранилища
    TestCertforWDK — имя тестового сертификата
    driver.sys — имя драйвера

    с настоящим сертификатом:
    signtool sign /v /ac MSCV-GlobalSign.cer /s PrivateCertStore /n "YourTrueCertName" /t http://timestamp.globalsign.com/scripts/timstamp.dll driver.sys
    где
    MSCV-GlobalSign.cer — имя кросс-сертификата
    YourTrueCertName — имя настоящего сертификата
    timestamp.globalsign.com/scripts/timstamp.dll — адрес таймстампингового центра, в моем случае global sign

Далее драйвер можно установить программно с помощью специальных АПИ либо с помощью замечательной тулзы

KmdManager

.

Подпись пакета драйверов
В реальной жизни подписи самого драйвера оказывается недостаточно, дело в том, что драйвера устройств как правило поставляются в комплекте с inf-файлом, в котором содержится информация о драйвере и устройствах которые он обслуживает. В этом случае необходимо будет сгенерить cat-файл, который содержит в себе инфу о всех файлах пакета, а потом подписать его точно также, как подписывали драйвер.
Для генерации cat-файла и его подписи нам понадобится:

  1. Корректный inf-файл (запасайтесь бубнами ребятки)
  2. Тулза которая генерит этот cat-файл из inf-файлов — inf2cat (эта тулза входит в комплект WDK6001/7600, и написана, как не странно, на .NET)
  3. После чего генерим cat-файл, например так
    inf2cat.exe /driver:releaseamd64 /os:Vista_x64,Server2003_x64,Server2008_x64
    где
    releaseamd64 — папка в которой находится inf-файл и драйверы
    Vista_x64,Server2003_x64,Server2008_x64 — список ОС, на которых должен работать драйвер
  4. Подписываем его точно также, как и драйвер
    signtool sign /v /ac MSCV-GlobalSign.cer /s PrivateCertStore /n "YourTrueCertName" /t http://timestamp.globalsign.com/scripts/timstamp.dll catalog.cat
    сам драйвер при этом подписывать не обязательно.
  5. Проверяем, что все хорошо подписалось, для этого открываем свойство .cat файла (или драйвера) и смотрим вкладку Digital Signatures — если есть то можем полюбоваться на результат, если нет, то где-то накосячили.
    Также более достоверно можно проверить с помощью командной строки
    signtool verify /pa /v /c catalog.cat

EasySign
В результате всех моих исследований на предмет САБЖ-а, я некатал по-быстрому простенькую программку EasySign, которая может подписывать дрова без дополнительного гимора с командной строкой и bat-файлами. Возможно кому-то будет полезно.
image
Саму прогу можно скачать тут, а мануалку почитать ниже:

  1. Вбиваем в Inf Dir путь к папке где лежит сам .inf файл и все необходимые файлы к нему прилагающиеся.
  2. Выбираем ОСи где работает драйвер.
  3. Cross Cert — указываем путь к кросс-сертификату, если нужно подписать драйвер по-настоящему
  4. Cert Store — названия хранилища, где лежит наш сертификат (например PrivateCertStore)
  5. Cert Name — название сертификата (например TestCertforWDK), если сертификат один в хранилище, то можно и не заполнять это поле.
  6. Time Stamp — адрес таймстампингового центра, для тестового сертификата — можно оставить пустым
  7. Файлы которые надо подписать, тут нужно обязательно добавить cat файл (если еще не создан, то прописать его имя вручную), а также можно добавить все файлы драйверов
  8. Generate Catalog Only — если подписывать не надо, а только создать .cat файл
  9. Жмем Sign — чтобы создать cat-файл и подписать, жмем Log — чтобы почитать что произошло, часто бывают ошибки, например неправильно составлен inf-файл, либо signtool чего-то не нашел и т.п.
Про сертификаты:  Как скопировать сертификат с Рутокена на другой носитель и обратно

Литература по теме
http://msdn.microsoft.com/en-us/library/ff544865(VS.85).aspx

Для электромобилей код подписывая, прикрепите свой usb-токен к компьютеру (если вы еще этого не сделали).

Помните, что закрытый ключ существует только на USB-токене, который был отправлен вам, и что токен должен быть прикреплен на компьютер, который используется для подписи приложения. Этот шаг следует пропустить, если вы используете сертификат подписи кода OV.

Другие варианты

Другие важные параметры SignTool:

Использование всех вышеперечисленных опций (но без /a, /sha1 или /f потому что мы указываем имя субъекта сертификата с помощью /nнаша командная строка выглядит так:

Зачем нужна цифровая подпись

Цифровая подпись предназначена для того, чтобы указать автора программы и показать, что данная программа или файл не был изменен другими лицами. Если кто-то попробует модифицировать подписанную программу, то цифровая подпись сразу становится недействительной. Это главное предназначение цифровой подписи.


Второе преимущество подписанных программ и инсталляций состоит в том, что антивирусные программы более лояльно относятся к подписанным приложениям. Ложные срабатывания и необоснованные попадания в карантин у подписанных программ встречаются реже.

Также сравните сообщения, которые показывает UAC при запуске подписанной и неподписанной инсталляции. Сообщение для подписанной инсталляции вызывает больше доверия у пользователя.

Используйте файл pkcs # 12 / pfx

Если у вас есть сертификат подписи кода и закрытый ключ в файле PKCS # 12 (также известном как файл PFX или P12), вы можете указать файл и его пароль в командной строке:

.  signtool.exe sign / fd sha256 / f "C:  path  to  MyCertificate.pfx" / p пароль "C:  path  to  MyExecutable.exe"

Как подписывать инсталляции в инсталляторе createinstall

Конечно, можно самостоятельно подписывать инсталляции созданные CreateInstall, но лучше автоматизировать этот процесс. К тому же, наш инсталлятор позволяет подписывать uninstall.exe и update.exe, которые будут потом распакованы при установке вашей программы на компьютер пользователя.

Рассмотрим следующее решение с использованием утилиты kSignCMD.exe, которая входит в программу kSign. Создайте .bat файл примерно следующего содержания и сохраните его в секретном месте. Самое главное, чтобы он был доступен в момент сборки вашего дистрибутива. [pfxfile] замените на полный путь к вашему .pfx файлу, а [password] замените на ваш пароль.

Команда pause нужна, чтобы вы могли вовремя обнаружить ошибку, которая может возникнуть при попытке подписать приложение. С другой стороны, из-за этой команды вам придется нажимать на какую-нибудь клавишу для продолжения процесса создания дистрибутива.

"C:Program Files (x86)kSignkSignCMD.exe" /f  "[pfxfile]" /p [password] %1 %2 %3 %4 %5
pause

Сейчас откройте ваш проект в CreateInstall и перейдите к закладке Проект – страница Setup Builder. В поле Application for Code Signing укажите полный путь к созданному нами .bat файлу. Он будет запускаться когда потребуется подписать приложение.

Про сертификаты:  Экологический диктант 2021: регистрация на экодиктант.рус!

Далее укажите параметры для подписывания дистрибутива, деинсталлятора и программы проверки обновлений. Первым параметром должно быть определено общее наименование программы, а вторым , который будет автоматически заменен на полный путь к подписываемому приложению. Например, значения могут быть следующими:

Parameters for Signing of Installation File: Setup "<exefilename>"
Parameters for Signing of Uninstaller File: Uninstall "<exefilename>"
Parameters for Signing of Updater File: Update "<exefilename>"

В данном случае, CreateInstall вызовет наш .bat файл для подписывания установки, деинсталлятора и программы обновления, если вы включаете ее в свой проект.

Как получить цифровую подпись

Цифровую подпись можно купить у специальных организаций. Например, Comodo, Verisign (Symantec). Сертификат можно приобрести как на один год, так и на несколько лет. Цены начинаются от $100-150 за один год, но через партнеров можно купить сертификат дешевле.

Например, KSoftware, являсь стратегическим партнером Comodo, продают сертификаты за $95 в год и есть скидки при его покупке на несколько лет. После того как вы произвели оплату, сотрудники соответствующей организации удостоверятся, что вы являетесь именно тем лицом или организацией на чье имя выдается цифровая подпись.

Когда все данные проверены, вам будет дана ссылка, по которой вы загрузите сертификат в Internet Explorer и затем вам нужно сохранить его в виде файла с расширением .pfx, также у вас должен быть пароль, который вы указывали при формировании заявки на сертификат.

Подписание файла windows exe

У меня есть EXE- файл, который я хочу подписать, чтобы Windows не предупредила конечного пользователя о приложении от «неизвестного издателя». Я не разработчик Windows. Рассматриваемое приложение является заставкой, созданной из приложения, которое генерирует приложения-заставки. Таким образом, я не имею никакого влияния на то, как создается файл.

Я уже узнал, что мне понадобится сертификат подписи кода от ЦС, такого как Verisign или instantmy-sertif.ru. Что я не понимаю, так это то, что мне нужно сделать (если это вообще возможно), чтобы подписать мой EXE-файл. Какое простое объяснение?

Ответ Мела Грина взял меня дальше, но signtool просит меня указать, какой сертификат использовать в любом случае. Могу ли я получить бесплатный сертификат подписи кода, чтобы проверить, будет ли это работать для меня вообще?

Также, пожалуйста, укажите, какой тип сертификата является правильным. Большинство сайтов упоминают только «подписывание кода» и говорят о подписи приложений, которые фактически скомпилированы пользователем. Это не тот случай для меня.

Проверить подпись

Используйте эту команду для проверки подписанного кода (обратите внимание, что /pa опция должна присутствовать в команде):

.  signtool.exe verify / pa "C:  path  to  MyExecutable.exe"

Если ваш файл был успешно подписан, вы должны увидеть следующий результат:

Файл: C:  path  to  MyExecutable.exe Метка времени алгоритма индексации =================================== ===== 0 sha256 RFC3161 Успешно проверено: C:  path  to  MyExecutable.exe

Вы также можете убедиться, что файл подписан, щелкнув его значок правой кнопкой мыши и выбрав Свойства из меню, затем выбрав Цифровые подписи таб. Чтобы просмотреть сведения о подписи, выберите ее и нажмите Подробнее кнопку.

Здесь мы видим, что файл содержит действующую цифровую подпись, созданную SSL Corp 28 июня 2020 года.

Укажите имя темы

Если у вас установлено более одного USB-токена или сертификата для подписи кода, вы можете указать сертификат вы хотите использовать, включая его Имя субъекта через /n опцию.

Вы можете найти имя субъекта вашего сертификата EV CS с помощью инструмента управления сертификатами Microsoft Certmgr. Откройте инструмент из меню «Пуск» и найдите свой сертификат EV CS в папке «Личные» в разделе «Сертификаты», как показано на изображении ниже. Имя субъекта – это поле «Кому выдано» в certmgr.

На изображении выше имя субъекта сертификата example, Вы можете указать это значение в SignTool с помощью следующей команды.

.  signtool.exe sign / fd sha256 / n "пример" "C:  path  to  MyExecutable.exe"

Укажите хэш sha1

Если у вас есть несколько сертификатов с одним и тем же именем субъекта, вы также можете использовать хэш SHA1 (или «отпечаток») сертификата, чтобы выбрать его для подписи. Заменить THUMBPRINT в приведенной ниже команде с фактическим хешем SHA1 вашего сертификата.

.  signtool.exe sign / fd sha256 / sha1 THUMBPRINT "C:  path  to  MyExecutable.exe"

Установить windows sdk и signtool

SignTool входит в комплект Пакет SDK для Windows 10, После установки SignTool будет находиться под:

C:  Program Files (x86)  Комплекты Windows  10  bin   x64  signtool.exe

Оцените статью
Мой сертификат
Добавить комментарий