Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как создать и доверять сертификату для подписывания пакетов приложений с помощью средств PowerShell (для инструментов CMD см. здесь). Рекомендуется использовать Visual Studio для упаковки приложений UWP и упаковки классических приложений, но вы по-прежнему можете упаковать приложение вручную, если вы не использовали Visual Studio для разработки приложения.
Предпосылки
Упакованое или распакованое приложение
Приложение, содержащее файл AppxManifest.xml. При создании сертификата, который будет использоваться для подписи окончательного пакета приложения, вам потребуется ссылаться на файл манифеста. Дополнительные сведения о том, как вручную упаковать приложение, см. в статье "Создание пакета приложения" с помощью средства MakeAppx.exe.Командлеты PKI (инфраструктуры открытых ключей)
Для создания и экспорта сертификата подписи требуются командлеты PKI. Для получения дополнительной информации см. командлеты инфраструктуры открытых ключей.
Создание самозаверяющего сертификата
Самозаверяющий сертификат полезен для тестирования приложения, прежде чем вы будете готовы опубликовать его в Магазине. Выполните действия, описанные в этом разделе, чтобы создать самозаверяющий сертификат.
Замечание
При создании и использовании самозаверяющего сертификата, ваше приложение смогут работать только те пользователи, которые установят ваш сертификат и будут ему доверять. Это легко реализовать для тестирования, но может предотвратить установку приложения дополнительными пользователями. Когда вы будете готовы опубликовать приложение, рекомендуется использовать сертификат, выданный доверенным источником. Эта система централизованного доверия помогает гарантировать, что экосистема приложений имеет уровни проверки для защиты пользователей от вредоносных субъектов.
Определение темы упаковаемого приложения
Чтобы использовать сертификат для подписывания пакета приложения, субъект в сертификате должен соответствовать разделу Publisher в манифесте приложения.
Например, раздел "Удостоверение" в файле AppxManifest.xml приложения должен выглядеть примерно так:
<Identity Name="Contoso.AssetTracker"
Version="1.0.0.0"
Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>
В данном случае "Издатель" — "CN=Contoso Software, O=Contoso Corporation, C=US", который необходимо использовать для создания вашего сертификата.
Создание сертификата с помощью New-SelfSignedCertificate
Используйте командлет PowerShell New-SelfSignedCertificate для создания самозаверяющего сертификата. New-SelfSignedCertificate имеет несколько параметров для настройки, но для этой статьи мы сосредоточимся на создании простого сертификата, который будет работать с SignTool. Дополнительные примеры и использование этого командлета см. в разделе New-SelfSignedCertificate.
На основе файла AppxManifest.xml из предыдущего примера следует использовать следующий синтаксис для создания сертификата. В командной строке PowerShell с повышенными привилегиями:
New-SelfSignedCertificate -Type Custom -KeyUsage DigitalSignature -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -FriendlyName "Your friendly name goes here"
Обратите внимание на следующие сведения о некоторых параметрах:
KeyUsage: этот параметр определяет, для чего может использоваться сертификат. Для самозаверяющего сертификата этот параметр должен иметь значение DigitalSignature.
TextExtension: этот параметр включает параметры для следующих расширений:
Расширенное использование ключей (EKU): это расширение указывает дополнительные цели, для которых может использоваться сертифицированный открытый ключ. Для самозаверяющего сертификата этот параметр должен содержать строку расширения "2.5.29.37={text}1.3.6.1.5.5.7.3.3", которая указывает, что сертификат будет использоваться для подписи кода.
Основные ограничения. Это расширение указывает, является ли сертификат центром сертификации (ЦС). Для самозаверяющего сертификата этот параметр должен содержать строку расширения "2.5.29.19={text}", которая указывает, что сертификат является конечной сущностью (а не ЦС).
После выполнения этой команды сертификат будет создан и добавлен в хранилище личных сертификатов пользователя. Результат команды также выведет отпечаток сертификата.
Вы можете просмотреть сертификат в окне PowerShell с помощью следующих команд:
Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint
При этом будут отображаться все сертификаты в хранилище личных сертификатов пользователя.
Чтобы установить приложение, подписанное этим сертификатом, сертификат необходимо импортировать в хранилище сертификатов доверенных пользователей локального компьютера.
Экспорт сертификата в PFX-файл
Чтобы импортировать созданный сертификат в хранилище сертификатов доверенных людей локального компьютера, сначала необходимо экспортировать его в PFX-файл с помощью командлета Export-PfxCertificate .
При использовании Export-PfxCertificate необходимо создать и использовать пароль или использовать параметр -ProtectTo, чтобы указать, какие пользователи или группы могут получить доступ к файлу без пароля. Обратите внимание, что ошибка будет отображаться, если вы не используете параметр "-Password" или "-ProtectTo". '-Password' рекомендуется для общего использования, в то время как '-ProtectTo' полезно, если учетная запись пользователя поддерживается контроллером домена.
Использование пароля
$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password
Использование ProtectTo
Export-PfxCertificate -cert Cert:\CurrentUser\My\<Certificate Thumbprint> -FilePath <FilePath>.pfx -ProtectTo <Username or group name>
Импорт сертификата в хранилище доверенных пользователей локального компьютера
Теперь, когда вы экспортировали сертификат в PFX-файл, вы можете импортировать его в хранилище "Доверенные лица" локального компьютера с помощью командлета Import-PfxCertificate из сеанса PowerShell с правами администратора.
Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" -Password $password -FilePath <FilePath>.pfx
Теперь, когда сертификат является доверенным, вы готовы подписать пакет приложения с помощью SignTool. Следующий шаг в процессе упаковки вручную см. в разделе "Подписание пакета приложения с помощью SignTool".
Вопросы безопасности
Добавив сертификат в хранилища сертификатов локального компьютера ,, вы влияете на уровень доверия сертификатов всех пользователей на компьютере. Рекомендуется удалить эти сертификаты, если они больше не нужны, чтобы предотвратить их использование для компрометации доверия системы.