Подписывание пакета приложения (приложения для Магазина Windows)

По умолчанию все пакеты приложений, создаваемые в Visual Studio, подписываются с использованием тестового сертификата. При создании пакета Visual Studio создает папку, которая содержит подписанный пакет. Файл сертификата (CER-файл), который включается в эту папку, содержит открытый ключ, используемый для подписывания пакета. Этот ключ должен устанавливаться на компьютер перед установкой пакета приложения.

Создание тестового сертификата

Файл сертификата (PFX) создается и добавляется в проект при создании этого проекта.

Для поля субъекта сертификата задается атрибут Publisher элемента Identity файла манифеста источника (APPXMANIFEST-файла).

  • При создании локального пакета атрибут Publisher по умолчанию устанавливается равным имени пользователя.

  • При создании пакета для Магазин Windows или связывании приложения с ним для атрибута Publisher задается значение Publisher ID, получаемое из учетной записи разработчика в Магазин при входе во время создания пакета.

В процессе создания сертификатов также добавляет свойство в файл проекта.

<PackageCertificateKeyFile> RisingStar_TemporaryKey.pfx </PackageCertificateKeyFile>

Значение PackageCertificateKeyFile является относительным или полным путем к сертификату источника.

Если сертификат отсутствует, он создается при построении пакета из меню Магазин, но не при построении пакета из командной строки. При создании сертификата в Visual Studio устанавливаются значения следующих свойств:

  • значение расширения Основные ограничения устанавливается равным Тип субъекта=Конечный субъект;

    Примечание

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

  • Значение расширения Расширенное использование ключа (EKU) устанавливается равным Подписывание кода.

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

Совет

Если в процессе подписания появится ошибка вида "Указанный сертификат недействителен, поскольку срок его действия истек или сертификат имеет другие проблемы", с помощью конструктора манифеста создайте тестовый сертификат, чтобы заменить недействительный.

Проверка сертификатов

Во время создания пакетов Visual Studio проверяет указанный сертификат следующими способами:

  • проверяет наличие расширения Основные ограничения и значение, которое должно равняться Тип субъекта=Конечный субъект или быть не заданным;

  • проверяет значение свойства Расширенное использование ключа, которое должно содержать значение Подписывание кода, а также может содержать значение Бессрочная подписка. Все другие расширенные использования ключа запрещены;

  • проверяет значение свойства KeyUsage (KU), которое должно равняться Отменить или DigitalSignature;

  • проверяет наличие закрытого ключа;

  • проверяет, активен ли сертификат, не истек ли его срок действия, и не был ли он отозван.

В некоторых сценариях может потребоваться более точно следить за тем, какой сертификат используется, и, следовательно, каким образом он проверяется. Свойство MSBuild EnableSigningChecks определяет, какие из вышеперечисленных правил проверки применяются. Если это свойство равно True (по умолчанию), Visual Studio выполняет все проверки. Если это свойство равно False, Visual Studio выполняет только следующие задачи:

  • проверяет, существует ли закрытый ключ;

  • проверяет, что значение свойства Расширенное использование ключа содержит Подписывание кода;

  • проверяет, активен ли сертификат, не истек ли его срок действия, и не был ли он отозван.

Примечание

Если свойство EnableSignignChecks равняется False, скрипт PowerShell может не работать, поскольку пользовательский сертификат может не соответствовать всем правилам, которые должны выполняться, чтобы скрипт мог установить пакет приложения. Дополнительные сведения см. в разделе Локальный общий доступ к пакету приложения (приложения для Магазина Windows).

Выбор альтернативного сертификата

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

Создание или использование альтернативного сертификата

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

  2. В разделе Конструктор манифеста приложения перейдите на вкладку Упаковка, а затем нажмите кнопку Выбор сертификата.

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

    • Выбор в хранилище сертификатов
      Выберите один из сертификатов Personal из хранилища сертификатов в операционной системе.

    • Выбор из файла
      Выберите существующий файл сертификата в файловой системе.

    • Создание тестового сертификата
      Создайте сертификат с требуемым Publisher ID. Также можно создать пароль.

Какой бы параметр ни был выбран, файл сертификата добавляется к проекту, и свойства проекта PackageCertificateThumbprint PackageCertificateKeyFile обновляются соответственно.

Примечание

Если в процессе подписания появится ошибка вида "Указанный сертификат недействителен, поскольку срок его действия истек или сертификат имеет другие проблемы", с помощью конструктора манифеста создайте пользовательский сертификат, чтобы заменить недействительный.

Обновление сертификата

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

Обновление сертификата

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

  2. В разделе Конструктор манифеста приложения перейдите на вкладку Упаковка, а затем нажмите кнопку Выбор сертификата.

  3. В диалоговом окне Выбор сертификата разверните список Настройка сертификата и выберите Создание тестового сертификата.

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

    Visual Studio повторно создаст сертификат с новой датой окончания срока действия.

Удаление и экспорт сертификатов

Может потребоваться удалить или экспортировать сертификат, срок действия которого истек или который был скомпрометирован, поврежден или заменен другим сертификатом. Сведения об удалении и экспорте сертификатов см. в разделе Использование консоли сертификатов.

Изменение установленных приложений

Если какие-либо файлы в установленном пакете были изменены, проверка подписи может препятствовать запуску приложения. Чтобы изменить пакет, внести изменения в исходные файлы с кодом с использованием лицензии разработчика, а затем заново разверните измененный пакет. Дополнительные сведения о лицензиях разработчика см. в разделе Получение лицензии разработчика (приложения для Магазина Windows).

См. также

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

Переопределение манифеста приложения (приложения для Магазина Windows)

Упаковка приложения для Магазина Windows с помощью Visual Studio 2012