- Подписывание пакета приложения Windows 10 Sign a Windows 10 app package
- Установка меток времени Timestamping
- Режим устройства Device mode
- Создание сертификата для подписания пакета Create a certificate for package signing
- Предварительные требования Prerequisites
- Создание самозаверяющего сертификата Create a self-signed certificate
- Определение субъекта вашего упакованного приложения Determine the subject of your packaged app
- Использование командлета New-SelfSignedCertificate для создания сертификата Use New-SelfSignedCertificate to create a certificate
- Экспорт сертификата Export a certificate
- Использование пароля Password usage
- Использование ProtectTo ProtectTo usage
- Замечания по безопасности Security considerations
Подписывание пакета приложения Windows 10 Sign a Windows 10 app package
Подписывание пакета приложения — это обязательный шаг в процессе создания развертываемых пакетов приложений Windows 10. App package signing is a required step in the process of creating a Windows 10 app package that can be deployed. В Windows 10 все приложения должны быть подписаны с помощью допустимого сертификата для подписи кода. Windows 10 requires all applications to be signed with a valid code signing certificate.
Для успешной установки приложения для Windows 10 пакет не только подписывается, но и настраивается как надежный на устройстве. To successfully install a Windows 10 application, the package doesn’t just have to be signed but also trusted on the device. Это означает, что сертификат должен быть связан с одним из доверенных корневых сертификатов на устройстве. This means that the certificate has to chain to one of the trusted roots on the device. По умолчанию в Windows 10 настроено доверие к сертификатам от большинства центров сертификации, предоставляющих сертификаты для подписи кода. By default, Windows 10 trusts certificates from most of the certificate authorities that provide code signing certificates.
Раздел Topic | Описание Description |
---|---|
Необходимые условия для подписывания Prerequisites for signing | В этом разделе описаны предварительные требования, которые нужно удовлетворить, прежде чем подписывать пакет приложения Windows 10. This section discusses the prerequisites required to sign the Windows 10 app package. |
Использование SignTool Using SignTool | В этом разделе описано, как подписать пакет приложения с помощью средства SignTool из пакета SDK для Windows 10. This section discusses how to use SignTool from the Windows 10 SDK to sign the app package. |
Подписывание пакета MSIX с помощью подписи Device Guard Sign an MSIX package with Device Guard signing | В этом разделе описывается, как подписать приложение с помощью подписи Device Guard. This section discusses how to sign your app with Device Guard signing. |
Установка меток времени Timestamping
Настоятельно рекомендуется использовать метки времени при подписывании приложения с помощью сертификата. It is highly recommended that Timestamping is used when signing your app with a certificate. Это действие сохраняет подпись, обеспечивая принятие пакета приложений платформой развертывания приложения, даже если срок действия сертификата истек. Timestamping preserves the signature allowing the app package to accepted by app deployment platform even after the certificate has expired. Во время проверки пакета метка времени позволяет проверить подпись пакета с учетом времени подписывания. At the package inspection time, the timestamp allows for the package signature to be validated with respect to the time it was signed. Такие пакеты будут приняты, даже если сертификат недействителен. This allows for packages to be accepted even after the certificate is no longer valid. Пакеты без меток времени будут проверяться с учетом текущего времени и, если сертификат недействителен, Windows не примет такой пакет. Packages that are not timestamped will be evaluated against the current time and if the certificate is no longer valid, Windows will not accept the package.
Ниже описаны разные сценарии подписывания приложения с использованием меток времени и без них. The following are the different scenarios around app signing with/out timestamping:
Приложение подписано без метки времени App is signed without timestamping | Приложение подписано с меткой времени App is signed with timestamping | |
---|---|---|
Сертификат действительный Certificate is valid | Приложение будет установлено. App will install | Приложение будет установлено. App will install |
Сертификат недействительный (срок действия истек) Certificate is invalid(expired) | Приложение не будет установлено. App will fail to install | Приложение будет установлено, так как подлинность сертификата была проверена при подписывании центром меток времени. App will install as the authenticity of the cert was verified at signing by timestamping authority |
Если приложение установлено на устройстве, оно будет выполняться даже после истечения срока действия сертификата независимо от того, были ли установлены метки. If the app is successfully installed on a device, it will continue to run even after the certificate expiry regardless of it being timestamped or not.
Режим устройства Device mode
Windows 10 позволяет пользователям выбирать следующие режимы работы устройства в настройках приложения: Windows 10 allows users to select the mode in which to run their device on in the Settings app. «Приложения Microsoft Store», «Неопубликованные приложения» и «Режим разработчика». The modes are Microsoft Store apps, Sideload apps, and Developer mode.
Приложения Microsoft Store — это самый безопасный режим, так как он разрешает установку приложений только из Microsoft Store. Microsoft Store apps is the most secure as it only allows the installation of apps from the Microsoft Store. Приложения в Microsoft Store проходят процесс сертификации, гарантирующий, что приложения безопасны для использования. Apps in the Microsoft Store go through certification process to ensure that the apps are safe for use.
Неопубликованные приложения и Режим разработчика — это менее строгие режимы использования приложений, которые были подписаны с помощью других сертификатов, которые являются доверенными и которые связаны с одним из доверенных корневых сертификатов на устройстве. Sideload apps and Developer mode are more permissive of apps that are signed by other certificates as long as those certificates are trusted and chain to one of the trusted roots on the device. Выбирайте режим разработчика, только если вы являетесь разработчиком, который создает или отлаживает приложения для Windows 10. Only select Developer mode if you are a developer and building or debugging Windows 10 apps. См. подробнее о режиме разработчика. More info about Developer mode and what it provides can be found here.
Создание сертификата для подписания пакета Create a certificate for package signing
В этой статье объясняется, как создать и экспортировать сертификат для подписывания пакета приложений с помощью инструментов PowerShell. This article explains how to create and export a certificate for app package signing using PowerShell tools. Мы рекомендуем использовать Visual Studio для упаковки приложений UWP и упаковки настольных приложений, но вы по-прежнему можете упаковать приложение вручную, если вы не используете Visual Studio для разработки приложения. It’s recommended that you use Visual Studio for packaging UWP apps and packaging desktop apps, but you can still package an app manually if you did not use Visual Studio to develop your app.
Предварительные требования Prerequisites
Упакованное или распакованное приложение A packaged or unpackaged app
Приложение, содержащее файл AppxManifest.xml. An app containing an AppxManifest.xml file. При создании сертификата, который будет использоваться для подписывания окончательного пакета приложений, потребуется сослаться на этот файл манифеста. You will need to reference the manifest file while creating the certificate that will be used to sign the final app package. Сведения о том, как вручную упаковать приложение, см. в разделе Создание пакета приложений с помощью инструмента MakeAppx.exe. For details on how to manually package an app, see Create an app package with the MakeAppx.exe tool.
Командлеты инфраструктуры открытых ключей (PKI) Public Key Infrastructure (PKI) Cmdlets
Вам потребуются командлеты PKI для создания и экспорта сертификата для подписи. You need PKI cmdlets to create and export your signing certificate. Дополнительные сведения см. в разделе Командлеты инфраструктуры открытых ключей. For more information, see Public Key Infrastructure Cmdlets.
Создание самозаверяющего сертификата Create a self-signed certificate
Самозаверяющий сертификат полезен для тестирования приложения, прежде чем вы будете готовы опубликовать его в магазине. A self-signed certificate is useful for testing your app before you’re ready to publish it to the Store. Выполните действия, описанные в этом разделе, чтобы создать самозаверяющий сертификат. Follow the steps outlined in this section to create a self-signed certificate.
При создании и использовании самозаверяющего сертификата только пользователи, которые устанавливают и доверяют сертификату, могут запускать приложение. When you create and use a self-signed certificate only users who install and trust your certificate can run your application. Это легко реализовать для тестирования, но это может препятствовать установке дополнительных пользователей в приложение. This is easy to implement for testing but it may prevent additional users from installing your application. Когда вы будете готовы опубликовать приложение, рекомендуется использовать сертификат, выданный доверенным источником. When you are ready to publish your application we recommend that you use a certificate issued by a trusted source. Эта система централизованного доверия помогает убедиться, что экосистема приложений имеет уровни проверки для защиты пользователей от вредоносных субъектов. This system of centralized trust helps to ensure that the application ecosystem has levels of verification to protect users from malicious actors.
Определение субъекта вашего упакованного приложения Determine the subject of your packaged app
Чтобы использовать сертификат для подписывания пакета приложений, значение в поле сертификата «Субъект» должно совпадать с данными в разделе «Издатель» манифеста вашего приложения. To use a certificate to sign your app package, the «Subject» in the certificate must match the «Publisher» section in your app’s manifest.
Например, раздел «Идентификатор» файла AppxManifest.xml вашего приложения должен выглядеть примерно следующим образом: For example, the «Identity» section in your app’s AppxManifest.xml file should look something like this:
«Издатель» в данном случае — «CN=Contoso Software, O=Contoso Corporation, C=US», и именно его следует использовать для создания сертификата. The «Publisher», in this case, is «CN=Contoso Software, O=Contoso Corporation, C=US» which needs to be used for creating your certificate.
Использование командлета New-SelfSignedCertificate для создания сертификата Use New-SelfSignedCertificate to create a certificate
Используйте командлет PowerShell New-SelfSignedCertificate для создания самозаверяющего сертификата. Use the New-SelfSignedCertificate PowerShell cmdlet to create a self signed certificate. Командлет New-SelfSignedCertificate имеет несколько параметров для настройки, однако в этой статье мы сконцентрируемся на создании простого сертификата, который будет работать вместе с SignTool. New-SelfSignedCertificate has several parameters for customization, but for the purpose of this article, we’ll focus on creating a simple certificate that will work with SignTool. Дополнительные примеры и варианты использования этого командлета см. в статье New-SelfSignedCertificate. For more examples and uses of this cmdlet, see New-SelfSignedCertificate.
Основываясь на файле AppxManifest.xml из предыдущего примера, используйте следующий синтаксис для создания сертификата. Based on the AppxManifest.xml file from the previous example, you should use the following syntax to create a certificate. В строке с повышенными привилегиями PowerShell: In an elevated PowerShell prompt:
Обратите внимание на следующие сведения о некоторых параметрах. Note the following details about some of the parameters:
Кэйусаже. Этот параметр определяет, для чего может использоваться сертификат. KeyUsage: This parameter defines what the certificate may be used for. Для самозаверяющего сертификата этот параметр должен иметь значение дигиталсигнатуре. For a self-signing certificate, this parameter should be set to DigitalSignature.
Текстекстенсион: этот параметр включает параметры для следующих расширений: TextExtension: This parameter includes settings for the following extensions:
Расширенное использование ключа (EKU). это расширение указывает дополнительные цели, для которых может использоваться сертифицированный открытый ключ. Extended Key Usage (EKU): This extension indicates additional purposes for which the certified public key may be used. Для самозаверяющего сертификата этот параметр должен включать строку расширения «2.5.29.37 =
Основные ограничения. это расширение указывает, является ли сертификат центром сертификации (ЦС). Basic Constraints: This extension indicates whether or not the certificate is a Certificate Authority (CA). Для самозаверяющего сертификата этот параметр должен включать строку расширения «2.5.29.19 =
После выполнения этой команды сертификат будет добавлен в локальное хранилище сертификатов, как указано в параметре «-CertStoreLocation». After running this command, the certificate will be added to the local certificate store, as specified in the «-CertStoreLocation» parameter. Результат выполнения команды также будет выдавать отпечаток сертификата. The result of the command will also produce the certificate’s thumbprint.
Сертификат можно просмотреть в окне PowerShell, выполнив следующие команды: You can view your certificate in a PowerShell window by using the following commands:
Это позволит отобразить все сертификаты в вашем локальном хранилище. This will display all of the certificates in your local store.
Экспорт сертификата Export a certificate
Чтобы экспортировать сертификат из локального хранилища в файл обмена личной информацией (PFX), используйте командлет Export-PfxCertificate. To export the certificate in the local store to a Personal Information Exchange (PFX) file, use the Export-PfxCertificate cmdlet.
При использовании командлета Export-PfxCertificate следует либо создать и использовать пароль, либо с помощью параметра «-ProtectTo» указать, какие пользователи или группы могут осуществлять доступ к файлу без пароля. When using Export-PfxCertificate, you must either create and use a password or use the «-ProtectTo» parameter to specify which users or groups can access the file without a password. Обратите внимание, что если вы не используете параметр «-Password» или «-ProtectTo», отобразится ошибка. Note that an error will be displayed if you don’t use either the «-Password» or «-ProtectTo» parameter.
Использование пароля Password usage
Использование ProtectTo ProtectTo usage
После создания и экспорт сертификата вы готовы подписать пакет приложений с помощью SignTool. After you create and export your certificate, you’re ready to sign your app package with SignTool. Следующий шаг в процессе упаковки вручную описан в разделе Подпись пакета приложения с использованием инструмента SignTool. For the next step in the manual packaging process, see Sign an app package using SignTool.
Замечания по безопасности Security considerations
Добавив сертификат в хранилища сертификатов локальной машины, вы меняете доверие сертификатов всех пользователей на компьютере. By adding a certificate to local machine certificate stores, you affect the certificate trust of all users on the computer. Рекомендуется удалить эти сертификаты, когда они больше не требуется, чтобы их невозможно было использовать для нарушения доверия системы. It is recommended that you remove those certificates when they are no longer necessary to prevent them from being used to compromise system trust.