как подписать приложение windows

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

SignTool — это средство командной строки, используемое для цифровой подписи пакета приложения или пакета приложений с помощью сертификата. Сертификат может быть создан пользователем (для тестирования) или выдан компанией (для распространения). Подписывание пакета приложения дает пользователю средство проверки отсутствия изменений в данных приложения после его подписи, при этом также подтверждается подлинность пользователя или компании, подписавшего пакет. SignTool может подписать зашифрованные и незашифрованные пакеты приложения и пакеты приложений.

Если для разработки приложения использовали Visual Studio, рекомендуется применять мастер Visual Studio для создания и подписывания пакета приложения. дополнительные сведения см. в статьях упаковка приложения UWP с Visual Studio и упаковка классического приложения из исходного кода с помощью Visual Studio.

Дополнительные сведения о подписи кода и сертификатах в целом см. в разделе Знакомство с процессом подписания кода.

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

Упакованное приложение
Подробнее о ручном создании пакета приложения, создания пакета приложения с помощью средства MakeAppx.exe.

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

SignTool.exe
В зависимости от пути установки пакета SDK SignTool может находиться в следующих расположениях на компьютере с Windows 10:

Применение SignTool

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

Определение хэш-алгоритма

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

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

В этой таблице показан каждое значение HashMethod и соответствующий хэш-алгоритм:

Значение HashMethodХэш-алгоритм
http://www.w3.org/2001/04/xmlenc#sha256SHA256
http://www.w3.org/2001/04/xmldsig-more#sha384SHA384
http://www.w3.org/2001/04/xmlenc#sha512SHA512

Так как в SignTool по умолчанию применяется алгоритм SHA1 (которого нет в MakeAppx.exe), вам всегда необходимо указывать хэш-алгоритм при использовании SignTool.

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

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

Общий синтаксис командной строки при подписи пакета с помощью SignTool таков:

Сертификат, используемый для подписания приложения, должен быть либо PFX-файлом либо установлен в хранилище сертификатов.

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

Обратите внимание, что параметр /a позволяет SignTool автоматически выбрать наиболее подходящий сертификат.

Если ваш сертификат не является PFX-файлом, используйте следующий синтаксис:

Обратите внимание, что с некоторыми сертификатами пароль не используется. Если для вашего сертификата не требуется пароль, опустите параметр «/p » в примерах команд.

Подписав пакет приложения с помощью действительного сертификата, вы сможете отправить пакет в Store. Дополнительные рекомендации по загрузке и отправке приложений в Store см. в разделе Отправка приложений.

Источник

Code Signing в Windows, просто и недорого

Хотел бы рассказать тут о такой важной особенности разработки под Windows как Code Signing. А ведь многие достаточно серьёзные разработчики до сих пор ей не пользуются, и очень зря. Помимо того что при запуске вашего неподписанного приложения появляется противная красная иконка с крестом и неприятным текстом:
«Этот файл не имеет цифровой подписи которая может подтвердить производителя. Вы должны запускать программы только от производителей которым доверяете.»
Это ещё и пропуск на корпоративный рынок.

При запуске неподписанной программы появляется такое окно:
как подписать приложение windows. image loader. как подписать приложение windows фото. как подписать приложение windows-image loader. картинка как подписать приложение windows. картинка image loader. SignTool — это средство командной строки, используемое для цифровой подписи пакета приложения или пакета приложений с помощью сертификата. Сертификат может быть создан пользователем (для тестирования) или выдан компанией (для распространения). Подписывание пакета приложения дает пользователю средство проверки отсутствия изменений в данных приложения после его подписи, при этом также подтверждается подлинность пользователя или компании, подписавшего пакет. SignTool может подписать зашифрованные и незашифрованные пакеты приложения и пакеты приложений.

А так выглядит окно когда программа подписана:
как подписать приложение windows. image loader. как подписать приложение windows фото. как подписать приложение windows-image loader. картинка как подписать приложение windows. картинка image loader. SignTool — это средство командной строки, используемое для цифровой подписи пакета приложения или пакета приложений с помощью сертификата. Сертификат может быть создан пользователем (для тестирования) или выдан компанией (для распространения). Подписывание пакета приложения дает пользователю средство проверки отсутствия изменений в данных приложения после его подписи, при этом также подтверждается подлинность пользователя или компании, подписавшего пакет. SignTool может подписать зашифрованные и незашифрованные пакеты приложения и пакеты приложений.

Один важный момент, прежде чем получать сертификат, очень желательно зарегистрировать вашу компанию или ИП в агенстве Dun & Bradstreet и получить DUNS номер. Этот номер очень уважается компаниями которые выдают сертификаты и при предъявлении этого номера, в абсолютном большинстве случаев, более никаких подтверждающих документов не спрашивают. Иначе придётся высылать сканы уставных документов, а иногда и каких-нибудь счетов на компанию, например за телефон. Для получения сертификата на ИП это один из главных шагов. Без этого в случае ИП может вообще ничего не получиться.

Сам процесс подписания программы/инсталлятора достаточно простой и легко автоматизируется, если надо могу описать и его.

Вот собственно и всё. Если вы работаете на рынке программного обеспечения для windows — сертификат это важная и необходимая вещь. Я надо признать и сам стал избегать неподписанных программ после этого.

Источник

Создание сертификата для подписи пакета приложения

MakeCert.exe не рекомендуется к использованию. Текущие рекомендации по созданию сертификата см. в разделе Создание сертификата для подписания пакета.

узнайте, как использовать MakeCert.exe и Pvk2Pfx.exe для создания тестового сертификата подписи кода, чтобы вы могли подписывать пакеты приложений Windows.

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

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

Технологии

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

Инструкции

Шаг 1. Определение имени издателя пакета

чтобы сделать сертификат подписи, который вы создадите, использовать с пакетом приложения, который необходимо подписать, имя субъекта сертификата подписи должно соответствовать атрибуту Publisher элемента Identity в AppxManifest.xml для этого приложения. Например, предположим, что AppxManifest.xml содержит:

Эта строка параметра указывается в кавычках и является учетом регистра и пробела.

Шаг 2. создание закрытого ключа с помощью MakeCert.exe

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

Эта команда предложит указать пароль для PVK-файла. Рекомендуется выбрать надежный пароль и защитить закрытый ключ в безопасном месте.

Рекомендуется использовать предлагаемые параметры из предыдущего примера по следующим причинам.

Создает самозаверяющий корневой сертификат. Это упрощает управление тестовым сертификатом.

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

Задает значения расширенного использования ключа (EKU) для сертификата.

Не ставьте пробел между двумя значениями, разделенными запятыми.

Задает дату окончания срока действия сертификата. Укажите значение параметра expirationDate в формате мм/дд/гггг. Рекомендуется выбирать дату истечения срока действия, если это необходимо для целей тестирования, как правило, меньше года. Эта дата окончания срока действия в сочетании с ключом времени существования подписывания может помочь ограничить окно, в котором сертификат может быть скомпрометирован и недоступен.

Дополнительные сведения о других параметрах см. в разделе MakeCert.

шаг 3. создание файла личных данных Exchange (. pfx) с помощью Pvk2Pfx.exe

Файлы MyKey. PVK и MyKey. cer являются теми же файлами, которые MakeCert.exe созданы на предыдущем шаге. С помощью необязательного параметра/по можно указать другой пароль для результирующего PFX-файла; в противном случае PFX-файл имеет тот же пароль, что и MyKey. PVK.

Дополнительные сведения о других параметрах см. в разделе Pvk2Pfx.

Remarks

После создания PFX-файла можно использовать файл с помощью средства SignTool для подписания пакета приложения. Дополнительные сведения см. в разделе как подписать пакет приложения с помощью средства SignTool. Но сертификат по-прежнему не является доверенным для локального компьютера для развертывания пакетов приложений, пока он не будет установлен в хранилище доверенных сертификатов на локальном компьютере. Вы можете использовать Certutil.exe, который поставляется вместе с Windows.

Установка сертификатов с помощью WindowsCertutil.exe

Запустите Cmd.exe от имени администратора.

Выполните следующую команду:

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

CertID — серийный номер сертификата. Выполните следующую команду, чтобы определить серийный номер сертификата:

Соображения безопасности

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

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

Примеры

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

How to sign an app package using SignTool (Подписывание пакета приложения с помощью SignTool)

Источник

Использование цифровых подписей для упрощения управления приложениями для классических приложений для Windows

Относится к:

Некоторые возможности управления приложениями в Защитнике Windows доступны только в определенных версиях для Windows. Узнайте больше о доступности функции управления приложениями в Защитнике Windows.

В этом разделе описывается руководство по использованию классических приложений для управления Windows подписываю кода.

Оценка ваших приложений: подписание приложений и файлы каталога

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

Файлы каталогов могут оказаться очень полезными для неподписанных собственных бизнес-приложений, для которых не так легко получить встроенную подпись. Однако каталоги должны обновляться при каждом обновлении приложения. В отличие от встроенной подписи политики WDAC, как правило, не должны обновляться вместе с приложением. По этой причине, если подпись кода включена или может быть включена в процесс разработки приложения внутри организации, вы можете упростить управление WDAC (по сравнению с использованием подписи каталога).

Чтобы получить подписанные приложения или встроить подписи в собственные приложения, можно выбрать один из методов.

С помощью процедуры публикации в Microsoft Store. Все приложения в Microsoft Store автоматически подписываются с помощью специальных подписей, предоставляемых нашим или вашим собственным центром сертификации (ЦС).

Использование собственного цифрового сертификата или инфраструктуры открытых ключей (PKI). Поставщики услуг Интернета и организации могут сами подписывать свои классические приложения для Windows, добавляя себя в список доверенных источников.

С помощью заверителя подписи, отличного от Microsoft. Независимые поставщики программного обеспечения и организации могут использовать доверенного заверителя подписи, отличного от Microsoft, чтобы подписывать собственные классические приложения для Windows.

Использовать подпись каталога можно с помощью одного из следующих вариантов.

Используйте портал Защитник Windows, доступный в Microsoft Store для бизнеса и образовании. Портал является веб-службой Microsoft, которую можно использовать для подписи классических приложений для Windows.

Создайте собственные файлы каталогов, описанные в следующем разделе.

Файлы каталога

Файлы каталога (которые можно создавать в Windows 10 и Windows 11 с помощью средства под названием Package Inspector) содержат сведения обо всех развернутых и выполненных двоичных файлах, связанных с доверенными, но неподписаными приложениями. При создании файлов каталога также можно включить подписанные приложения, при работе с которыми вы хотите доверять конкретному приложению, а не подписавшему его лицу. После создания каталога необходимо подписать сам файл каталога с помощью корпоративной инфраструктуры открытых ключей или приобретенного сертификата для подписи кода. Затем можно распространить каталог, чтобы доверенные приложения обрабатывались WDAC так же, как любые другие подписанные приложения.

Файлы каталога представляют собой простые списки хэширования алгоритма SHA-2 обнаруженных двоичных файлов. При каждом обновлении приложения эти значения hash-файлов обновляются, что также требует обновления файла каталога.

После создания и подписания файлов каталога можно настроить политики WDAC для доверия подписавшему лицу или сертификату подписи этих файлов.

Инспектор пакетов работает только на операционных системах Защитник Windows, таких как Windows 10 и Windows 11 Enterprise, Windows 10 и Windows 11 Education, Windows 2016 Server или Windows Enterprise IoT.

Политика управления приложениями в Защитнике Windows: форматы и подписывание

При создании политики WDAC создается документ XML с двоичным кодом, который включает параметры конфигурации для режимов пользователя и ядра 11 Windows 10 и Windows 11 Enterprise, а также ограничения для 11 хостов сценариев Windows 10 и Windows. Вы можете просмотреть свой исходный XML-документ в текстовом редакторе, например при необходимости проверить параметры правила, которые включены в раздел этого файла.

Рекомендуется сохранить исходный XML-файл для использования при объединении политики WDAC с другой политикой или при обновлении параметров правила в этой политике. В целях развертывания файл преобразуется в двоичный формат, что можно сделать с помощью простой команды Windows PowerShell.

Развернутая политика WDAC ограничивает программное обеспечение, которое может быть запущено на устройстве. XML-документ может быть подписан, что обеспечивает дополнительную защиту от изменения или удаления политики пользователями, имеющими права администратора.

Источник

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

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

узнайте, как использовать средство SignTool для подписывания пакетов приложений Windows, чтобы их можно было развернуть. средство SignTool входит в состав пакета sdk (Windows Software Development Kit).

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

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

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

Технологии

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

средство SignTool, являющееся частью Windows SDK

допустимый сертификат подписи кода, например файл личных данных Exchange (pfx), созданный с помощью средств MakeCert.exe и Pvk2Pfx.exe

Сведения о создании допустимого сертификата подписи кода см. в разделе Создание сертификата для подписи пакета приложения.

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

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

Сертификат должен быть допустимым для подписывания кода. Это означает, что оба этих элемента должны быть истинными:

Сертификат содержит закрытый ключ.

Сертификат действителен. Он активен, не просрочен и не был отозван.

Инструкции

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

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

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

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

Значение хашмесодhashAlgorithm для использования
https://www.w3.org/2001/04/xmlenc#sha256SHA256 (по умолчанию. appx)
https://www.w3.org/2001/04/xmldsig-more#sha384SHA384
https://www.w3.org/2001/04/xmlenc#sha512SHA512

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

Подписание пакета сертификатом подписи из PFX-файла

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

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

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

Установите параметр/tr тиместампсерверурл равным URL-адресу для сервера отметок времени RFC 3161.

Комментарии

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

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

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

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

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

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

Идентификатор событияПример строки событияПредложение
150ошибка 0x8007000B: имя издателя манифеста приложения (CN=Contoso) должно соответствовать имени субъекта сертификата подписи (CN=Contoso, C=US).Имя издателя манифеста приложения должно точно соответствовать имени субъекта подписи.

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

Соображения безопасности

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *