Как подписать программу сертификатом Windows

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

Я уже выяснил, что мне понадобится подпись подписи с CA, например Verisign или instantssl.com. Я не понимаю, что мне нужно (если это вообще возможно) подписать мой EXE файл. Что такое простое объяснение? Ответ «Мел зеленый» взял меня дальше, но signtool хочет, чтобы я указывал, какой сертификат использовать в любом случае.

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

Установка ЭЦП на компьютер с флешки в КриптоПро 5.0. Пошаговая инструкция

Lasar 30 окт. 2008, в 22:47

Поделиться

Просто любопытно — сколько нужно заплатить, чтобы купить сертификат?

Rigel 27 янв. 2018, в 15:17

Sharan Arumugam 12 март 2019, в 11:58

Rigel 12 март 2019, в 13:07

Показать ещё 1 комментарий

Источник: overcoder.net

Подписание пакета приложения с помощью SignTool

Подписывание пакета приложения Windows см. в разделе «Подписывание пакета приложения с помощью SignTool».

Узнайте, как использовать SignTool для подписывания пакетов приложений Windows, чтобы их можно было развернуть. SignTool является частью пакета средств разработки программного обеспечения Windows (SDK).

Все пакеты приложений Windows должны быть цифровыми подписами, прежде чем их можно будет развернуть. Хотя Microsoft Visual Studio 2012 и более поздних версий может подписывать пакет приложения во время его создания, пакеты, создаваемые с помощью средства упаковщика приложений (MakeAppx.exe) из пакета SDK Windows, не подписываются.

Читайте также:
Windows 10 программа при запуске сразу закрывается

SignTool можно использовать только для подписывания пакетов приложений Windows на Windows 8 и более поздних версиях или Windows Server 2012 и более поздних версиях. Вы не можете использовать SignTool для подписывания пакетов приложений в операционных системах нижнего уровня, таких как Windows 7 или Windows Server 2008 R2.

Это важно знать

Технологии

  • Знакомство с подписыванием кода
  • Пакеты приложений и развертывание
  • Средства подписывания файлов и проверки подписей

Предварительные требования

  • SignTool, который входит в пакет SDK Windows
  • Действительный сертификат подписи кода, например файл Exchange личной информации (PFX), созданный с помощью средствMakeCert.exe и Pvk2Pfx.exe Сведения о создании допустимого сертификата подписи кода см. в разделе » Создание сертификата подписи пакета приложения».
  • Упаковаемое приложение Windows, например APPX-файл, созданный с помощью средства упаковщика приложений (MakeAppx.exe)

Дополнительные сведения

Как установить электронную подпись на компьютер

Сертификат, используемый для подписи пакета приложения, должен соответствовать следующим критериям:

  • Имя субъекта сертификата должно соответствовать атрибуту Publisher, который содержится в элементе Identity файла AppxManifest.xml, хранящегося в пакете. Имя издателя является частью удостоверения упаковаемого приложения Windows, поэтому необходимо сделать имя субъекта сертификата соответствующим имени издателя приложения. Это позволяет проверять удостоверение подписанных пакетов на соответствие цифровой подписи. Сведения об ошибках подписывания, которые могут возникнуть при подписи пакета приложения с помощью SignTool, см. в разделе «Примечания» статьи «Создание сертификата подписи пакета приложения».
  • Сертификат должен быть допустимым для подписывания кода. Это означает, что оба этих элемента должны иметь значение true:
  • Поле расширенного использования ключа (EKU) сертификата должно быть не задано или содержать значение EKU для подписывания кода (1.3.6.1.5.5.7.3.3).
  • Поле «Использование ключа» (KU) сертификата должно быть не задано или содержать бит использования для цифровой подписи (0x80).

Инструкции

Шаг 1. Определение хэш-алгоритма для использования

При подписании пакета приложения необходимо использовать тот же хэш-алгоритм, который использовался при создании пакета приложения. Если вы использовали параметры по умолчанию для создания пакета приложения, используется хэш-алгоритм SHA256.

Если вы использовали упаковщик приложений с определенным хэш-алгоритмом для создания пакета приложения, используйте тот же алгоритм, чтобы подписать пакет. Чтобы определить хэш-алгоритм, используемый для подписывания пакета, можно извлечь содержимое пакета и проверить файл AppxBlockMap.xml. Атрибут HashMethod элемента BlockMap указывает хэш-алгоритм, который использовался при создании пакета приложения. Пример:

Читайте также:
Как ускорить Виндовс 10 программа

Предыдущий элемент BlockMap указывает, что использовался алгоритм SHA256. В этой таблице перечислены сопоставления доступных в настоящее время алгоритмов:

Значение HashMethod hashAlgorithm для использования
https://www.w3.org/2001/04/xmlenc#sha256 SHA256 (.appx по умолчанию)
https://www.w3.org/2001/04/xmldsig-more#sha384 SHA384
https://www.w3.org/2001/04/xmlenc#sha512 SHA512

Шаг 2. Запуск SignTool.exe для подписания пакета

Подписывание пакета с помощью сертификата подписи из PFX-файла

SignTool sign /fd hashAlgorithm /a /f signingCert.pfx /p password filepath.appx

SignTool по умолчанию параметр /fd hashAlgorithm имеет значение SHA1, если он не указан, и SHA1 не является допустимым для подписывания пакетов приложений. Поэтому этот параметр необходимо указать при подписании пакета приложения. Чтобы подписать пакет приложения, созданный с помощью хэша SHA256 по умолчанию, укажите параметр /fd hashAlgorithm в качестве SHA256:

SignTool sign /fd SHA256 /a /f signingCert.pfx /p password filepath.appx

Параметр /p password можно опустить, если используется PFX-файл, который не защищен паролем. Вы также можете использовать другие параметры выбора сертификата, поддерживаемые SignTool для подписывания пакетов приложений. Дополнительные сведения об этих параметрах см. в разделе SignTool.

Невозможно использовать операцию метки времени SignTool в подписанном пакете приложения; операция не поддерживается.

Если вы хотите заметить пакет приложения по времени, его необходимо выполнить во время операции подписи. Пример:

SignTool sign /fd hashAlgorithm /a /f signingCert.pfx /p password /tr timestampServerUrl filepath.appx

Значение параметра /tr timestampServerUrl равно URL-адресу сервера меток времени RFC 3161.

Remarks

В этом разделе описывается устранение ошибок подписывания для пакетов приложений.

Устранение ошибок подписывания пакета приложения

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

SignTool Error: An unexpected internal error has occurred. Error information: «Error: SignerSign() failed.» (-2147024885 / 0x8007000B)

Если код ошибки начинается с 0x8008, например 0x80080206 APPX_E_CORRUPT_CONTENT), он указывает, что подписанный пакет недопустим. В этом случае перед подписанием пакета необходимо перестроить пакет. Полный список ошибок 0x8008* см. в разделе «Коды ошибок COM » (безопасность и установка)».

Читайте также:
Программы для звука Виндовс 7 максимальная

Чаще всего эта ошибка 0x8007000b (ERROR_BAD_FORMAT). В этом случае в журнале событий можно найти более конкретные сведения об ошибке:

Поиск в журнале событий

  1. Запустите Eventvwr.msc.
  2. Откройте журнал событий: Просмотр событий (локальные) > приложения и службы регистрируют > Microsoft > Windows > AppxPackagingOM > Microsoft-Windows-AppxPackaging/Operational
  3. Найдите последнее событие ошибки.

Внутренняя ошибка обычно соответствует одному из следующих:

[! Примечание]
Эти имена указываются в кавычках, а регистр и пробелы чувствительны.

Вопросы безопасности

После подписания пакета сертификат, используемый для подписи пакета, по-прежнему должен быть доверенным компьютером, на котором будет развернут пакет. Добавив сертификат в хранилища сертификатов локальной машины, вы меняете доверие сертификатов всех пользователей на компьютере. Рекомендуется установить все сертификаты подписи кода, которые требуется для тестирования пакетов приложений в хранилище сертификатов доверенных людей, и немедленно удалить эти сертификаты, если они больше не нужны. Если вы создаете собственные тестовые сертификаты для подписывания пакетов приложений, мы также рекомендуем ограничить привилегии, связанные с тестируемым сертификатом. Дополнительные сведения о создании тестовых сертификатов для подписывания пакетов приложений см. в разделе «Создание сертификата подписи пакета приложения».

Связанные темы

Примеры

Основные понятия

Источник: learn.microsoft.com

Signtool. Подпись файлов сертификатом

Первым делом стоит определиться зачем кому-то может понадобиться подписывать какие-то файлы сертификатом. В общем смысле, в целях безопасности. Если же привести конкретные примеры, то например для подписания своего драйвера, ведь не подписанные драйвера блокируются в x64 системах начиная с Windows 7. Или же для того что бы добавить файл по сертификату в Whitelist антивируса, что бы не было ложных срабатываний.
Далее давайте детально разберем алгоритм подписания файлов.

    Для получения signtool.exe качаем Windows Software Development Kit (SDK) и производим нехитрую установку:

SDK_install. Signtool

Get-ChildItem -Path cert:LocalMachineMy | Where-Object < $_.hasPrivateKey >| Foreach-Object

cd C:Program Files (x86)Microsoft SDKsWindowsv7.1ABin
signtool.exe sign /fd SHA256 /a /f cert.pfx /p 12345 file.ps1

Подписывать пакетные файлы(batcmd) нельзя

Источник: administra.top

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru