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

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

SignTool — это средство командной строки, используемое для цифровой подписи пакета приложения или пакета приложений с помощью сертификата. SignTool is a command line tool used to digitally sign an app package or bundle with a certificate. Сертификат может быть создан пользователем (для тестирования) или выдан компанией (для распространения). The certificate can either be created by the user (for testing purposes) or issued by a company (for distribution). Подписывание пакета приложения дает пользователю средство проверки отсутствия изменений в данных приложения после его подписи, при этом также подтверждается подлинность пользователя или компании, подписавшего пакет. Signing an app package provides the user with verification that the app’s data has not been modified after it was signed while also confirming the identity of the user or company that signed it. SignTool может подписать зашифрованные и незашифрованные пакеты приложения и пакеты приложений. SignTool can sign encrypted or unencrypted app packages and bundles.

Если для разработки приложения использовали Visual Studio, рекомендуется применять мастер Visual Studio для создания и подписывания пакета приложения. If you used Visual Studio to develop your app, it’s recommended that you use the Visual Studio wizard to create and sign your app package. Дополнительные сведения см. в статьях Упаковка приложения UWP с помощью Visual Studio и упаковка классического приложения из исходного кода с помощью Visual Studio. For more information, see Package a UWP app with Visual Studio and Package a desktop app from source code using Visual Studio.

Дополнительные сведения о подписи кода и сертификатах в целом см. в разделе Знакомство с процессом подписания кода. For more information about code signing and certificates in general, see Introduction to Code Signing.

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

Упакованное приложение A packaged app
Подробнее о ручном создании пакета приложения, создания пакета приложения с помощью средства MakeAppx.exe. To learn more about manually creating an app package, see Create an app package with the MakeAppx.exe tool.

Действительный сертификат подписи A valid signing certificate
Дополнительные сведения о создании или импорте действительного сертификата подписи см. в разделе Создание или импорт сертификата для подписания пакета. For more information about creating or importing a valid signing certificate, see Create or import a certificate for package signing.

SignTool.exe SignTool.exe
В зависимости от пути установки пакета SDK SignTool может находиться в следующих расположениях на компьютере с Windows 10: Based on your installation path of the SDK, this is where SignTool is on your Windows 10 PC:

  • x86: C:\Program Files (x86) \Windows Kits\10\bin \ \x86\SignTool.exe x86: C:\Program Files (x86)\Windows Kits\10\bin\ \x86\SignTool.exe
  • x64: C:\Program Files (x86) \Windows Kits\10\bin \ \x64\SignTool.exe x64: C:\Program Files (x86)\Windows Kits\10\bin\ \x64\SignTool.exe

Применение SignTool Using SignTool

SignTool может использоваться для подписывания файлов, проверки подписей и меток времени, удаления подписей и другого. SignTool can be used to sign files, verify signatures or timestamps, remove signatures, and more. Так как нас интересует подписывание пакета приложения, мы рассмотрим команду sign. For the purpose of signing an app package, we will focus on the sign command. Подробные сведения об инструменте SignTool см. на справочной странице SignTool. For full information on SignTool, see the SignTool reference page.

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

При использовании SignTool для подписи пакета приложения или пакета приложений, хэш-алгоритм, применяемый в SignTool, должен совпадать с алгоритмом, использованном для упаковки приложения. When using SignTool to sign your app package or bundle, the hash algorithm used in SignTool must be the same algorithm you used to package your app. Например, если вы применили MakeAppx.exe для создания пакета приложения с параметрами по умолчанию, то необходимо выбрать SHA256 в SignTool, поскольку это алгоритм, по умолчанию используемый в MakeAppx.exe. For example, if you used MakeAppx.exe to create your app package with the default settings, you must specify SHA256 when using SignTool since that’s the default algorithm used by MakeAppx.exe.

Читайте также:  Iis windows что это такое

Чтобы узнать, какой алгоритм хэширования применялся при упаковке приложения, извлеките содержимое пакета и изучите файл AppxBlockMap.xml. To find out which hash algorithm was used while packaging your app, extract the contents of the app package and inspect the AppxBlockMap.xml file. Инструкции по распаковке/извлечению пакета приложения см. в разделе Извлечение файлов из пакета приложения или пакета приложений. To learn how to unpack/extract an app package, see Extract files from a package or bundle. Хэш-метод указан в элементе BlockMap и имеет следующий формат: The hash method is in the BlockMap element and has this format:

В этой таблице показан каждое значение HashMethod и соответствующий хэш-алгоритм: This table shows each HashMethod value and its corresponding hash algorithm:

Значение HashMethod HashMethod value Хэш-алгоритм Hash Algorithm
http://www.w3.org/2001/04/xmlenc#sha256 SHA256 SHA256
http://www.w3.org/2001/04/xmldsig-more#sha384 SHA384 SHA384
http://www.w3.org/2001/04/xmlenc#sha512 SHA512 SHA512

Так как в SignTool по умолчанию применяется алгоритм SHA1 (которого нет в MakeAppx.exe), вам всегда необходимо указывать хэш-алгоритм при использовании SignTool. Since SignTool‘s default algorithm is SHA1 (not available in MakeAppx.exe), you must always specify a hash algorithm when using SignTool.

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

Если у вас есть все необходимые компоненты и вы определили, какой хэш-алгоритм применялся для упаковки приложения, то вы готовы подписать его. Once you have all of the prerequisites and you’ve determined which hash algorithm was used to package your app, you’re ready to sign it.

Общий синтаксис командной строки при подписи пакета с помощью SignTool таков: The general command line syntax for SignTool package signing is:

Сертификат, используемый для подписания приложения, должен быть либо PFX-файлом либо установлен в хранилище сертификатов. The certificate used to sign your app must be either a .pfx file or be installed in a certificate store.

Чтобы подписать пакет приложения с помощью сертификата из PFX-файла, примените следующий синтаксис: To sign your app package with a certificate from a .pfx file, use the following syntax:

Обратите внимание, что параметр /a позволяет SignTool автоматически выбрать наиболее подходящий сертификат. Note that the /a option allows SignTool to choose the best certificate automatically.

Если ваш сертификат не является PFX-файлом, используйте следующий синтаксис: If your certificate is not a .pfx file, use the following syntax:

Кроме того, вы можете указать хэш SHA1 нужного сертификата вместо , с помощью следующего синтаксиса: Alternatively, you can specify the SHA1 hash of the desired certificate instead of using this syntax:

Обратите внимание, что с некоторыми сертификатами пароль не используется. Note that some certificates do not use a password. Если для вашего сертификата не требуется пароль, опустите параметр «/p » в примерах команд. If your certificate does not have a password, omit «/p » from the sample commands.

Подписав пакет приложения с помощью действительного сертификата, вы сможете отправить пакет в Store. Once your app package is signed with a valid certificate, you’re ready to upload your package to the Store. Дополнительные рекомендации по загрузке и отправке приложений в Store см. в разделе Отправка приложений. For more guidance on uploading and submitting apps to the Store, see App submissions.

Необязательно: создание сертификата подписи кода для Защитник Windows application Control Optional: Create a code signing cert for Windows Defender Application Control

Относится к: Applies to:

  • Windows 10 Windows 10
  • Windows Server 2016 Windows Server 2016

При развертывании Защитник Windows управления приложениями (WDAC) может потребоваться подписать файлы каталога или политики WDAC внутри организации. As you deploy Windows Defender Application Control (WDAC), you might need to sign catalog files or WDAC policies internally. Для этого вам потребуется выданный сертификат подписи кода или внутренний центр сертификации. To do this, you will either need a publicly issued code signing certificate or an internal CA. Если вы приобрели сертификат подписи кода, вы можете пропустить этот раздел и перейти к другим разделам, указанным в руководстве по развертыванию Защитник Windows управления приложениями. If you have purchased a code signing certificate, you can skip this topic and instead follow other topics listed in the Windows Defender Application Control Deployment Guide.

Если у вас есть внутренний центр сертификации, выполните следующие действия, чтобы создать сертификат подписи кода. If you have an internal CA, complete these steps to create a code signing certificate. Для сертификата подписи кода поддерживается только алгоритм RSA, а подписи должны быть заполнены по стандарту 1.5 PKCS. Only RSA algorithm is supported for the code signing certificate, and signatures must be PKCS 1.5 padded. Алгоритм ECDSA не поддерживается. ECDSA is not supported.

Откройте оснастку консоли управления MMC ЦС и выберите ваш центр сертификации, выдающий сертификаты подписи. Open the Certification Authority Microsoft Management Console (MMC) snap-in, and then select your issuing CA.

Выполнив подключение, щелкните правой кнопкой мыши Шаблоны сертификатови выберите Управление, чтобы открыть консоль шаблонов сертификации. When connected, right-click Certificate Templates, and then click Manage to open the Certification Templates Console.

Рис. 1. Figure 1. Управление шаблонами сертификатов Manage the certificate templates

В области навигации щелкните правой кнопкой мыши «Сертификат подписи кода» и выберите Скопировать шаблон. In the navigation pane, right-click the Code Signing certificate, and then click Duplicate Template.

На вкладке Совместимость снимите флажок Показать последующие изменения . On the Compatibility tab, clear the Show resulting changes check box. Выберите Windows Server 2012 в списке Центр сертификации , а затем выберите Windows 8 / Windows Server 2012 в списке Получатель сертификата . Select Windows Server 2012 from the Certification Authority list, and then select Windows 8 / Windows Server 2012 from the Certificate recipient list.

На вкладке Общие укажите Отображаемое имя шаблона и Имя шаблона. On the General tab, specify the Template display name and Template name. В этом примере используется имя Сертификат подписи каталога WDAC. This example uses the name WDAC Catalog Signing Certificate.

На вкладке Обработка запроса установите флажок Разрешить экспортировать закрытый ключ. On the Request Handling tab, select the Allow private key to be exported check box.

На вкладке Расширения установите флажок Основные ограничения и щелкните Изменить. On the Extensions tab, select the Basic Constraints check box, and then click Edit.

В диалоговом окне Расширение «Изменение основных ограничений» установите флажок Включить это расширение, как показано на рисунке 2. In the Edit Basic Constraints Extension dialog box, select Enable this extension, as shown in Figure 2.

Рис. 2. Figure 2. Выберите ограничения для нового шаблона Select constraints on the new template

Если для утверждения выданных сертификатов требуется диспетчер сертификатов, установите флажок Одобрения диспетчера сертификатов ЦС на вкладке Требования выдачи. If a certificate manager is required to approve any issued certificates, on the Issuance Requirements tab, select CA certificate manager approval.

На вкладке Имя субъекта выберите Предоставляется в запросе. On the Subject Name tab, select Supply in the request.

На вкладке Безопасность убедитесь, что все учетные записи, которые будут использоваться для запроса сертификата, имеют право на регистрацию сертификата. On the Security tab, verify that whatever account will be used to request the certificate has the right to enroll the certificate.

Щелкните в ОК , чтобы создать шаблон, и закройте консоль шаблонов сертификатов. Click OK to create the template, and then close the Certificate Template Console.

После создания шаблона сертификата необходимо опубликовать его в хранилище опубликованных шаблонов центра сертификации. When this certificate template has been created, you must publish it to the CA published template store. Для этого необходимо выполнить описанные ниже действия. To do so, complete the following steps:

В оснастке MMC центра сертификации щелкните правой кнопкой мыши Шаблоны сертификации, наведите указатель на пункт Создать, а затем нажмите Выдаваемый шаблон сертификата, как показано на рисунке 3. In the Certification Authority MMC snap-in, right-click Certification Templates, point to New, and then click Certificate Template to Issue, as shown in Figure 3.

Рис. 3. Figure 3. Выбор нового выдаваемого шаблона сертификата Select the new certificate template to issue

Появится список доступных выдаваемых шаблонов, включая только что созданный шаблон. A list of available templates to issue appears, including the template you just created.

Выберите сертификат подписи каталога WDAC и нажмите кнопку ОК. Select the WDAC Catalog signing certificate, and then click OK.

Как только шаблон станет доступным для выдачи, вам необходимо запросить его с компьютера под управлением Windows 10, на котором следует создать и подписать файлы каталога. Now that the template is available to be issued, you must request one from the computer running Windows 10 on which you create and sign catalog files. Откройте консоль MMC и выполните описанные ниже действия. To begin, open the MMC, and then complete the following steps:

На консоли управления (MMC) в меню Файл щелкните Добавить или удалить оснастку. In MMC, from the File menu, click Add/Remove Snap-in. Дважды щелкните Сертификатыи выберите Моя учетная запись пользователя. Double-click Certificates, and then select My user account.

В оснастке сертификатов щелкните правой кнопкой мыши папку «Личное хранилище», наведите указатель на пункт Все задачии выберите Запросить новый сертификат. In the Certificates snap-in, right-click the Personal store folder, point to All Tasks, and then click Request New Certificate.

Дважды щелкните Далее , чтобы открыть список выбора сертификата. Click Next twice to get to the certificate selection list.

В списке Запросить сертификат выберите только что созданный сертификат подписи, а затем щелкните голубую надпись, предлагающую ознакомиться с дополнительными сведениями (см. рис. 4). In the Request Certificate list, select your newly created code signing certificate, and then select the blue text that requests additional information, as shown in Figure 4.

Рис. 4. Figure 4. Получение дополнительных сведений о сертификате подписи кода Get more information for your code signing certificate

В диалоговом окне Свойства сертификата для параметра Типвыберите значение Общее имя. In the Certificate Properties dialog box, for Type, select Common name. Для параметра Значениеукажите ContosoDGSigningCert, а затем щелкните Добавить. For Value, select ContosoDGSigningCert, and then click Add. Добавив элемент, нажмите кнопку ОК When added, click OK.

В завершение выполните регистрацию. Enroll and finish.

Если для утверждения выданных сертификатов требуется диспетчер сертификатов и вы выбрали утверждение управления шаблоном, запрос должен быть утвержден в ЦС, прежде чем он будет выдан клиенту. If a certificate manager is required to approve any issued certificates and you selected to require management approval on the template, the request will need to be approved in the CA before it will be issued to the client.

Этот сертификат должен быть установлен в личном хранилище пользователя на компьютере, который будет подписывать файлы каталога и политики целостности кода. This certificate must be installed in the user’s personal store on the computer that will be signing the catalog files and code integrity policies. Если подписание будет выполняться на компьютере, с которого вы только что запросили сертификат, экспорт сертификата в PFX-файл не потребуется, поскольку такой файл уже существует в вашем личном хранилище. If the signing is going to be taking place on the computer on which you just requested the certificate, exporting the certificate to a .pfx file will not be required because it already exists in your personal store. Если вы выполняете подписывание на другом компьютере, вам необходимо будет экспортировать сертификат PFX с необходимыми ключами и свойствами. If you are signing on another computer, you will need to export the .pfx certificate with the necessary keys and properties. Для этого необходимо выполнить описанные ниже действия. To do so, complete the following steps:

Щелкните правой кнопкой мыши сертификат, наведите указатель на пункт Все задачии выберите Экспорт. Right-click the certificate, point to All Tasks, and then click Export.

Щелкните Далее, а затем выберите Да, экспортировать закрытый ключ. Click Next, and then select Yes, export the private key.

Выберите параметры по умолчанию, а затем выберите Экспортировать все расширенные свойства. Choose the default settings, and then select Export all extended properties.

Задайте пароль, выберите путь для экспорта, а затем укажите в качестве имени файла WDACCatSigningCert.pfx . Set a password, select an export path, and then select WDACCatSigningCert.pfx as the file name.

Если сертификат был экспортирован, импортируйте его в личное хранилище для пользователя, который будет подписывать файлы каталога или политики целостности кода, на конкретном компьютере, который их будет подписывать. When the certificate has been exported, import it into the personal store for the user who will be signing the catalog files or code integrity policies on the specific computer that will be signing them.

Читайте также:  Как сделать рамку окна тоньше windows 10
Оцените статью