Підписання пакету додатки за допомогою signtool - uwp app developer, microsoft docs

В цій статті

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

Якщо для розробки програми використовували Visual Studio, рекомендується застосовувати майстер Visual Studio для створення і підписування пакета програми. Додаткові відомості див. У розділі Упаковка додатки UWP за допомогою Visual Studio.

Додаткові відомості про підписи коду і сертифікатах в цілому см. В розділі Знайомство з процесом підписання коду.

попередні умови

Дійсний сертифікат підпису
Додаткові відомості про створення або імпорті дійсного сертифіката підпису см. В розділі Створення або імпорт сертифіката для підписання пакета.

SignTool.exe
Залежно від шляху установки пакета SDK SignTool може перебувати в наступних розташуваннях на комп'ютері з Windows 10:

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

застосування SignTool

SignTool може використовуватися для підписування файлів, перевірки підписів і міток часу, видалення підписів і іншого. Так як нас цікавить підписування пакета додатка, ми розглянемо команду sign. Докладні відомості про інструмент SignTool см. На довідкової сторінці SignTool.

Визначення хеш-алгоритму

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

Щоб дізнатися, який алгоритм хешування застосовувався при упаковці додатки, витягніть вміст пакета і вивчіть файл AppxBlockMap.xml. Інструкції з розпакування / вилучення пакета додатка см. В розділі Витяг файлів з пакета або набору. Хеш-метод вказано в елементі BlockMap і має такий вигляд:

У цій таблиці показано кожне значення HashMethod і відповідний хеш-алгоритм:

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

Підпис пакета додатка

Якщо у вас є всі необхідні компоненти і ви визначили, який хеш-алгоритм застосовувався для упаковки додатки, то ви готові підписати його.

Загальний синтаксис командного рядка при підпису пакета за допомогою SignTool такий:

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

Щоб підписати пакет додатка за допомогою сертифіката з PFX-файлу, застосуйте наступний синтаксис:

Зверніть увагу, що параметр / a дозволяє SignTool автоматично вибрати найбільш підходящий сертифікат.

Якщо ваш сертифікат не є PFX-файлом, використовуйте наступний синтаксис:

Крім того, ви можете вказати хеш SHA1 потрібного сертифіката замість <Имя сертификата>, за допомогою наступного синтаксису:

Зверніть увагу, що з деякими сертифікатами пароль не використовується. Якщо для вашого сертифіката не потрібно пароль, опустіть параметр "/ p <Ваш пароль>"В прикладах команд.

Підписавши пакет додатка за допомогою дійсного сертифіката, ви зможете відправити пакет в Магазин. Додаткові рекомендації щодо завантаження та відправки додатків в Магазин см. В розділі Відправлення додатків.

Поширені помилки і їх усунення

Найбільш поширені типи помилок при використанні SignTool є внутрішніми і зазвичай виглядають приблизно так:

Якщо код помилки починається з 0x8008, наприклад 0x80080206 (APPX_E_CORRUPT_CONTENT), що підписується пакет не є допустимим. При появі такого типу помилки, необхідно перебудувати пакет і запустити SignTool ще раз.

В інструменті SignTool є параметр налагодження для показу помилок з сертифікатом і їх фільтрації. Щоб використовувати функцію налагодження, помістіть параметр / debug відразу після sign. а потім повну команду SignTool.

Найбільш поширена помилка - 0x8007000B. Про подібний тип помилки можна знайти додаткові відомості в журналі подій.

Для отримання додаткових відомостей в журналі подій:

Внутрішня помилка 0x8007000B зазвичай відповідає одному з наступних значень: