Этот пакет приложения не подписан достоверным сертификатом
Я пытаюсь подписать приложение UWP для отладки или выпуска с целью тестирования на некоторых других устройствах. Мой сертификат недействителен.
Я попытался выполнить инструкции по Создать сертификат для подписи пакета и некоторых соседних страниц. Они делают вывод, что использование мастера VS должно просто работать.
P.S. Я никогда раньше не подписывал приложение для Windows. Может, мне стоит сделать это совсем по-другому?
2 ответа
Сертификату, в котором тема соответствует издателю, следует доверять.
А) Сертификат является самоподписанным (издатель совпадает с субъектом)
- Запустите certlm.msc (для доверия на всей машине) или certmgr.msc для текущего уровня доверия пользователей.
- Импортируйте сертификат в Trusted Root Certificate Authorities
Б) Сертификат НЕ самоподписанный (издатель НЕ совпадает с субъектом)
Вам не нужно ничего делать, если вы купили настоящий сертификат подписи кода, поскольку вы платите именно за доверие, которое мы устанавливаем .
Для подписания пакета к сертификату предъявляются дополнительные требования:
- Имя субъекта сертификата должно соответствовать атрибуту Publisher, содержащемуся в элементе Identity файла AppxManifest.xml, который хранится в пакете. Имя издателя является частью идентификатора упакованного приложения для Windows, поэтому вы должны сделать так, чтобы имя субъекта сертификата соответствовало имени издателя приложения. Это позволяет проверять идентичность подписанных пакетов по цифровой подписи. Для получения информации об ошибках подписи, которые могут возникнуть в результате подписания пакета приложения с помощью SignTool, см. Раздел «Примечания» в Как создать сертификат для подписи пакета приложения.
- Сертификат должен быть действительным для подписи кода. Это означает, что оба эти пункта должны быть верными:
- Поле расширенного использования ключа (EKU) сертификата должно быть отключено или содержать значение EKU для подписи кода (1.3.6.1.5.5.7.3.3).
- Поле Key Usage (KU) сертификата должно быть не задано или содержать бит использования цифровой подписи (0x80).
Настройте VS для использования клиентского ЦС (центра сертификации), подписавшего сертификат, который вы хотите использовать.
Этот CA должен быть корневым CA, и поэтому любой промежуточный CA также будет доверенным.
Общая причина этой проблемы заключается в том, что корневой ЦС отсутствует и цепочка доверия не может быть завершена, что означает, что у вас может быть установлен только промежуточный ЦС.
Только для Windows 10 1703+
(в том числе Mobile)
На LTSC и прочих обрезанных версиях ОС работа не гарантируется!Для автообновления приложения из вебустановщика установите новый сертификат отсюда
Если вы знаете о зеркале для определенного источника, которое не добавлено в приложение, пишите автору в ЛС.
Если вам по какой-либо причине нужно переустановить приложение, то помните о возможности сделать бэкап в Параметры-Данные.- Сортировка и выбор по жанрам фильмов, сериалов, телешоу.
- Поиск сериалов и фильмов по категориям.
- Онлайн просмотр и загрузка.
- Выбор качества видео.
- Авторизация через аккаунт.
- Оценки и отзывы.
- Избранное и история.
- Альтернативные источники файлов
Русский интерфейс: Да
Разработчик: (Tirraon)Убедительная просьба, прежде чем писать о неполадках в работе программы, или о рекламе, прочитайте шапку, особенно целиком.
Обращаю ваше внимание, что в теме не следует писать "прога супер, всё робит" и т.п.
Пишите информативно : аппарат, какая версия системы (включая номер сборки), версию программы (если установлено)у меня есть приложение для Windows 8, которое я хотел бы развернуть в Windows RT 2. У меня есть только .appx , и я хотел бы просто установить его для тестирования в обход магазина. Однако, когда я запускаю команду:
Я получаю следующую ошибку:
встроенный скрипт вернул вывод ошибки: Add-AppxPackage : развертывание не удалось с помощью HRESULT: 0x800B0109, обработанная цепочка сертификатов, но завершенная корневым сертификатом, которому не доверяет доверие поставщик. (Исключение из HRESULT: 0x800B0109) ошибка 0x800B0109: корневой сертификат подписи в пакете приложения должен быть доверенным.*
Google говорит, что мне нужен сертификат или сценарий PowerShell, но, конечно, есть способ, которым я могу просто обойти все это. В идеале, я хотел бы просто установить приложение для тестирования.
сертификат, вероятно, самозаверяющий, поэтому вам нужно установить его, чтобы доверять ему.
получить сертификат, который подписал приложение
Если это ваше собственное приложение, вы должны найти его в своей IDE (например, Visual Studio), иначе используйте следующие шаги:
- щелкните правой кнопкой мыши на файле APPX
- Выберите Свойства
- Нажмите Цифровые Подписи
- выберите подпись из списка
- клик Подробности
- Нажмите Кнопку Просмотр Сертификата
- Нажмите Кнопку Установить Сертификат
Установить сертификат
- С ПК Windows RT сопоставьте сетевой ресурс или подключите USB-накопитель, где можно получить доступ к папке AppPackages, содержащей пакет приложения для установки. Используйте Проводник Windows, чтобы открыть это папка.
- дважды коснитесь сертификат с файлом в папке, а затем нажмите Установить Сертификат. Это отображает Мастер Импорта Сертификатов.
- на Место Хранения группа, нажмите переключатель, чтобы изменить выбранную опцию на Локальная Машина.
- клик далее. Нажмите OK для подтверждения диалога UAC.
- на следующем экране Мастер Импорта Сертификатов измените выбранный параметр поместить все сертификаты в следующее хранилище.
- нажмите обзор. В Выбираем Хранилище Сертификатов всплывающее окно, прокрутите вниз и выберите Доверенные Люди, а затем нажмите OK.
- нажмите далее кнопка; появится новый экран. Коснитесь готово.
- A диалоговое окно подтверждения должно появиться; если да, нажмите OK. (Если другое диалоговое окно указывает на наличие проблемы с сертификатом, может потребоваться устранение неполадок сертификата. Однако, описывая, что делать в этом случае выходит за рамки данной темы.)
не работает для меня. Я все еще получаю ошибку после установки сертификат
Как это можно сделать сейчас
Создаем корневую директорию с названием, допустим, WPF2UWPApp. Пусть название вас не смущает, конвертировать можно не только WPF приложения, но и WinForms, Win32 и даже VB6.
В эту папку копируем исполняемый файл приложения и все необходимые библиотеки.Далее внутри папки создаем файл AppxManifest.xml с подобным содержимым внутри:
В манифесте мы используем минимальный набор логотипов. 3 файла SampleAppx.44x44.jpg, SampleAppx.150x150.jpg и Wide310x150Logo.jpg с соответствующими названиям разрешениями должны быть расположены внутри вложенной директории Assets.
Я не собираюсь публиковать это приложение в Store, поэтому в качестве CN издателя указал произвольное значение, а не привязанное к моему аккаунту в Store. Как вы могли заметить я сейчас не инсайдер и использую последний стабильный билд десятки — 10.0.14393.0
Еще раз структура:
Внутри корневой директории находится файл манифеста AppxManifest.xml, файл приложения (в моем случае это файл DemoWPFApp.exe) и другие вспомогательные файлы и библиотеки. Кроме того, внутри находится папка Assets с файлами логотипов. Как минимум это файлы SampleAppx.44x44.jpg, SampleAppx.150x150.jpg и Wide310x150Logo.jpg. После создания структуры и редактирования содержимого файла AppxManifest.xml можно приступать к созданию пакета приложения.
Перед созданием пакета можно протестировать правильность манифеста и прилагаемых файлов, совершив установку приложения в качестве универсального, использовав его манифест. Для тестовой установки открываем PowerShell и выполняем команду (находясь в той же директории, в которой находится и файл AppxManifest)
Параметр -Register регистрирует приложение в режиме разработки. Для того чтобы зарегистрировать готовое приложение необходимо использовать еще дополнительно и параметр –DisableDevelopmentMode.Вернемся к упаковке приложения в appx. Для этого открываем Developer Command Prompt. Выполняем следующую команду, которая создает appx файл:
Копируем файл сертификата из готового проекта или создаем тестовый сертификат как это описывается здесь: Sign an app converted with the Desktop BridgeУтилита MakeCert находится внутри папки bin SDK. На моей машине это C:\Program Files (x86)\Windows Kits\10\bin\x64 Синтаксис команды таков:
Имя publisher CN в манифесте должно соответствовать имени в сертификате. Параметр –eku 1.3.6.1.5.5.7.3.3 это enhanced key usage object identifier (OID), который используется для подписи кода (szOID_PKIX_KP_CODE_SIGNING). Подробную информацию о параметрах MakeCert вы можете найти на ее MSDN страничке. Там же присутствует информация о том, что утилита устарела и вместо нее сейчас рекомендуется использовать PowerShell командлет под названием New-SelfSignedCertificate. Однако, даже в последних примерах использования Desktop Bridge все еще используется MakeCert.В моем случае команда такая:
Еще раз обратите внимание, что CN точно такой же, как и в манифесте. В случае запроса пароля можно ввести его или же нажать None. Официальная документация предлагает не использовать пароль.Далее перемещаем и публичный и приватный ключ в сертификат:
Теперь с помощью SignTool можно подписать сертификатом наш пакет appx. Оба файла (alexcert.pfx и WPF2UWPApp.appx) должны находится в текущей папке:
Если вы решили использовать пароль, то добавится параметр /pВам необходимо либо установить новый сертификат для этого пакета приложения, либо новый пакет приложения с доверенными сертификатами. Ваш системный администратор или разработчик приложения может помочь в этом. Цепочка сертификатов обработана, но завершена в корневом сертификате, который не является доверенным (0x800B0109)
Чтобы ОС Windows считала сертификат доверенным, сертификат должен располагаться в узле Сертификаты (локальный компьютер) > Доверенные корневые центры сертификации > Сертификаты или Сертификаты (локальный компьютер) > Доверенные лица > Сертификаты.
А значит перед установкой приложения необходимо установить сертификат. Двойным кликом на сертификате устанавливаем его в хранилище локального компьютера
После установки сертификата можно установить и само приложение, кликнув на appx файл
Лампочка на скриншоте — это логотип моего демо приложения.
Как это можно будет сделать в Visual Studio 2017
На данный момент Visual Studio 2017 находится в стадии Release Candidate. Для автоматического создания пакета appx необходимо установить расширение Desktop to UWP Packaging Project
Открываем существующий проект. Добавляем в решение следующий тип проекта:
Создаем папку PackageLayout. Внутри нее создаем папку Assets. В папку PackageLayout добавляем файл манифеста AppxManifest.xml (файл пока что необходимо создавать вручную). В Assets копируем файлы SampleAppx.44x44.jpg, SampleAppx.150x150.jpg и Wide310x150Logo.jpg.
Не забываем, что необходимо не только скопировать файлы, но и добавить их в проект Visual Studio.
Структура нашего решения получится такой:
В свойствах проекта указываем папку PackageLayout. Если вы все сделали верно, то у вас в поле Start Up Tile появится возможность выбрать из выпадающего списка тайл.
Теперь давайте рассмотрим содержимое файла AppXPackageFileList.xml. По умолчанию оно такое:
А в результате правок получится что-то вот такое:Теперь достаточно назначить проект Desktop to UWP Packaging автозагружаемым, запустить проект на выполнение F5 и… на выходе мы должны получить appx. Но пока что не работает. TBD. Ждем релиза.
Как вы можете видеть часть ручной работы пока что все еще осталась. Все еще необходимо создавать вручную структуру директорий, создавать манифест и изменять файл AppXPackageFileList. Надеюсь, что в релизе все это автоматизируется.
Альтернативы
Microsoft активно работает с партнерами для того, чтобы была возможность одновременного создания как msi, так и appx инсталляторов. Больше информации вы можете найти по следующим ссылкам:
Кроме того, Embarcadero объявила о поддержке Desktop Bridge в своей Embarcadero RAD Studio.
Зачем это нужно?
Приведу несколько очевидных вариантов:
Читайте также: