Подписание пакета приложения с помощью SignTool
SignTool — это средство командной строки, используемое для цифровой подписи пакета приложения или пакета с сертификатом. Сертификат может быть создан пользователем (в целях тестирования) или выдан компанией (для распространения). Подписывание пакета приложения предоставляет пользователю проверку того, что данные приложения не были изменены после его подписания, а также подтверждение удостоверения пользователя или компании, подписав его. SignTool может подписывать зашифрованные или незашифрованные пакеты приложений и пакеты.
Важно!
Если вы использовали Visual Studio для разработки приложения, рекомендуется использовать мастер Visual Studio для создания и подписывания пакета приложения. Дополнительные сведения см. в разделе "Упаковка приложения UWP" с помощью Visual Studio и упаковки классического приложения из исходного кода с помощью Visual Studio.
Дополнительные сведения о подписи кода и сертификатах см . в разделе "Общие сведения о подписи кода".
Необходимые компоненты
Упакованое приложение
Дополнительные сведения о создании пакета приложения вручную см. в статье "Создание пакета приложения" с помощью средства MakeAppx.exe.Допустимый сертификат подписи
Дополнительные сведения о создании или импорте допустимого сертификата подписи см. в статье "Создание или импорт сертификата для подписи пакета".SignTool.exe
На основе пути установки пакета SDK это место, где SignTool находится на компьютере с Windows 10:- x86: C:\Program Files (x86)\Windows Kits\10\bin\sdk version>\<x86\SignTool.exe
- x64: C:\Program Files (x86)\Windows Kits\10\bin\sdk version>\<x64\SignTool.exe
Использование SignTool
SignTool можно использовать для подписывания файлов, проверки подписей или меток времени, удаления подписей и т. д. Для подписывания пакета приложения мы сосредоточимся на команде подписи . Полные сведения о SignTool см. на странице справочника по SignTool.
Определение хэш-алгоритма
При использовании SignTool для подписывания пакета или пакета приложения хэш-алгоритм, используемый в SignTool, должен быть тем же алгоритмом, который использовался для упаковки приложения. Например, если вы использовали MakeAppx.exe для создания пакета приложения с параметрами по умолчанию, необходимо указать SHA256 при использовании SignTool , так как это алгоритм по умолчанию, используемый MakeAppx.exe.
Чтобы узнать, какой хэш-алгоритм использовался при упаковке приложения, извлеките содержимое пакета приложения и проверьте файл AppxBlockMap.xml. Сведения о том, как распаковывать и извлекать пакет приложения, см. в статье "Извлечение файлов из пакета или пакета". Хэш-метод находится в элементе BlockMap и имеет следующий формат:
<BlockMap xmlns="http://schemas.microsoft.com/appx/2010/blockmap"
HashMethod="http://www.w3.org/2001/04/xmlenc#sha256">
В этой таблице показано каждое значение HashMethod и соответствующий алгоритм хэша:
Значение HashMethod | Хэш-алгоритм |
---|---|
http://www.w3.org/2001/04/xmlenc#sha256 | SHA256 |
http://www.w3.org/2001/04/xmldsig-more#sha384 | SHA384 |
http://www.w3.org/2001/04/xmlenc#sha512 | SHA512 |
Примечание.
Так как алгоритм signTool по умолчанию — SHA1 (недоступно в MakeAppx.exe), при использовании SignTool всегда необходимо указать хэш-алгоритм.
Подписыв пакет приложения
После получения всех необходимых компонентов и вы определили, какой хэш-алгоритм использовался для упаковки приложения, вы готовы подписать его.
Общий синтаксис командной строки для подписывания пакета SignTool :
SignTool sign [options] <filename(s)>
Сертификат, используемый для подписи приложения, должен быть PFX-файлом или установлен в хранилище сертификатов.
Чтобы подписать пакет приложения с помощью сертификата из PFX-файла, используйте следующий синтаксис:
SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.appx
SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.msix
Обратите внимание, что параметр /a
позволяет SignTool автоматически выбирать лучший сертификат.
Если сертификат не является PFX-файлом, используйте следующий синтаксис:
SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.msix
Кроме того, можно указать хэш SHA1 требуемого сертификата вместо <имени сертификата> с помощью этого синтаксиса:
SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.msix
Дополнительные примеры см. в разделе "Использование signTool для подписывания файла"
Обратите внимание, что некоторые сертификаты не используют пароль. Если у сертификата нет пароля, опустите "/p <ваш пароль>" из примеров команд.
После подписания пакета приложения с действительным сертификатом вы можете отправить пакет в Магазин. Дополнительные рекомендации по отправке и отправке приложений в Магазин см. в разделе "Отправка приложений".