Подписывание пакетов с помощью Azure Key VaultSign packages with Azure Key Vault

В Visual Studio 2019 16.6 (предварительная версия 3) и последующих версий пакеты UWP и классических приложений можно подписывать с помощью сертификата, хранящегося в Azure Key Vault, в сценариях разработки и тестирования.In Visual Studio 2019 version 16.6 Preview 3 and later versions, you can sign UWP and desktop app packages with a certificate stored in Azure Key Vault for development and test scenarios. Средство извлекает открытые и закрытые ключи из Azure Key Vault и загружает их в хранилище сертификатов на компьютере разработки, чтобы подписать пакет с помощью SignTool.exe.This tool extracts your public and private keys from your Azure Key Vault and loads them in the certificate store on your development computer in order to sign your package with SignTool.exe.

Важно!

Описанный в этой статье процесс относится только к сценариям разработки и тестирования.The process described in this article is intended for development and test scenarios only. Его не рекомендуется использовать для закрытых ключей, предназначенных для распространения.This process is not considered best practice for your private keys used for distribution. Чтобы обеспечить высокий уровень безопасности, закрытые ключи для распространения следует обрабатывать только теми инструментами, которые рекомендуются для используемой вами платформы непрерывной интеграции и непрерывного развертывания (CI/CD).To ensure best security practices, your private keys for distribution should be handled only by the tooling recommended by your Continuous Integration and Continuous Deployment (CI/CD) platform.

Предварительные условияPrerequisites

  • Учетная запись Azure.An Azure account. Если у вас еще нет учетной записи, зарегистрируйте ее здесь.If you do not already have an Azure account, start here.
  • Azure Key Vault.An Azure Key Vault. Дополнительные сведения см. в разделе Создание хранилища.For more info, see Create a Key Vault.
  • Действительный сертификат для подписывания пакета, импортированный в Azure Key Vault.A valid package signing certificate imported into Azure Key Vault. Сертификат, который создается в Azure Key Vault по умолчанию, не подходит для этого.The default certificate generated by Azure Key Vault will not work for code signing. Дополнительные сведения см. в статье Создание сертификата для подписывания пакета.For details on how to create a package signing certificate, see Create a certificate for package signing.

Импорт сертификата в Key VaultImport a certificate to your Key Vault

Добавить сертификат в Key Vault очень просто.Adding a certificate to your Key Vault is very simple. В этом примере мы добавим действительный сертификат для подписывания кода UWP с именем UwpSigningCert.pfx.In this example, we add a valid UWP code signing certificate called UwpSigningCert.pfx.

  1. На страницах свойств Key Vault выберите Сертификаты.On the Key Vault properties pages, select Certificates.
  2. Нажмите Generate/Import (Создать или импортировать).Click on Generate/Import.
  3. На экране Создание сертификата выберите следующие значения:On the Create a certificate screen, choose the following values:
    • Метод создания сертификата: ИмпортMethod of Certificate Creation: Import
    • Имя сертификата: UwpSigningCert.Certificate Name: UwpSigningCert
    • Отправка файла сертификата: UwpSigningCert.pfx.Upload Certificate File: UwpSigningCert.pfx
    • Decrypt Certificate (Расшифровка сертификата): если сертификат защищен паролем, укажите его в поле Пароль.Decrypt Certificate: If your certificate is password-protected, provide it in the Password field.
  4. Нажмите кнопку Create (Создать).Click Create.

Примечание

Чтобы этот самозаверяющий сертификат стал доверенным для Windows, импортировать и сделать его доверенным следует администратору.This self-signed certificate will not be trusted by Windows unless it has been imported and trusted by an administrator. Обеспечьте безопасность всех сертификатов, включая самозаверяющие.Keep all of your certificates secure including self-signed certificates.

Настройка политик доступа для Key VaultConfigure the access policies for your Key Vault

Вы можете управлять доступом к содержимому Key Vault с помощью политик доступа.You can control who has access to the contents of your Key Vault by using access policies. Политики доступа Key Vault предоставляют разрешения отдельно для ключей, секретов и сертификатов.Key Vault access policies grant permissions separately to keys, secrets, and certificates. Вы можете предоставить пользователю доступ только к ключам, но не к секретам.You can grant a user access only to keys and not to secrets. Разрешения на доступ к ключам, секретам и сертификатам управляются на уровне хранилища.Access permissions for keys, secrets, and certificates are managed at the vault level. Дополнительные сведения см. в статье Безопасность Azure Key Vault.For more information, see Azure Key Vault security.

Примечание

При создании Key Vault в подписке Azure решение автоматически связывается с клиентом Azure Active Directory этой подписки.When you create a Key Vault in an Azure subscription, it is automatically associated with the Azure Active Directory tenant of the subscription. Любому пользователю, пытающемуся управлять содержимым в Key Vault или извлекать его из Key Vault, следует пройти аутентификацию в Azure AD.Anyone trying to manage or retrieve content from a Key Vault must be authenticated by Azure AD.

  1. На страницах свойств Key Vault выберите Политики доступа.On the Key Vault properties pages, select Access policies.
  2. Щелкните элемент + Добавить политику доступа.Select + Add Access Policy.
  3. Разверните раскрывающийся список Разрешения ключей и в разделе Операции управления ключами установите флажки Получить и Список.Click on the Key permissions dropdown and check the boxes for Get and List under Key Management Operations.
  4. Щелкните элемент Выбор субъекта. Найдите пользователя, которому предоставляется доступ, и нажмите кнопку Выбрать.Click on Select principal, search for the user you are granting access to, and click Select.
  5. Нажмите кнопку Добавить.Click Add.
  6. Обязательно нажмите кнопку Сохранить, чтобы сохранить изменения.Make sure to save your changes by clicking Save.

Примечание

Не рекомендуется предоставлять пользователям непосредственный доступ к хранилищу ключей.Giving users direct access to a key vault is discouraged. Оптимальное решение — добавить пользователей в группу Azure AD, которой предоставлен доступ к хранилищу ключей.Ideally, users should be added to an Azure AD group, which is in turn given access to the key vault.

Выбор сертификата из Key Vault в Visual StudioSelect a certificate from your Key Vault in Visual Studio

Доступный в Visual Studio мастер Создание пакетов приложения позволяет выбрать сертификат, который будет использоваться для подписывания пакета приложения.The Create App Packages wizard in Visual Studio enables you to choose the certificate that will be used to sign your app package. Сертификат для подписывания пакета можно выбрать с помощью Azure Key Vault.You can choose the package signing certificate via Azure Key Vault. Необходимо указать универсальный код ресурса (URI) для Key Vault, где содержится сертификат. Кроме того, учетная запись Майкрософт, прошедшая проверку подлинности в Visual Studio, должна предоставлять соответствующие разрешения на доступ к хранилищу ключей.You must provide the URI of the Key Vault that contains the certificate, and your Microsoft account authenticated in Visual Studio must have the correct permissions to access it.

  1. В Visual Studio откройте проект приложения UWP или проект упаковки приложений Windows для классического приложения.Open your UWP application project or desktop Windows application packaging project in Visual Studio.
  2. Выберите элементы Опубликовать -> Пакет -> Создать пакеты приложения… , чтобы открыть мастер Создание пакетов приложения.Select Publish -> Package -> Create app packages... to open the Create App Packages wizard.
  3. На странице Выбрать метод распределения выберите элемент Загрузка неопубликованного приложения.On the Select distribution method page, select Sideloading.
  4. На странице Выбор метода подписывания щелкните элемент Select from Azure Key Vault… (Выбрать из Azure Key Vault…).On the Select signing method page, click Select from Azure Key Vault....
  5. Когда откроется диалоговое окно Select a certificate from Azure Key Vault (Выбор сертификат из Azure Key Vault), используйте средство выбора учетной записи, чтобы выбрать ту, для которой настроена политика доступа.After the Select a certificate from Azure Key Vault dialog appears, use the account picker to choose the account for which you have configured an access policy.
  6. Введите универсальный код ресурса (URI) для Key Vault.Enter the URI of the Key Vault. Его можно найти на странице Обзор для Key Vault в графе DNS-имя.The URI can be found on the Overview page of the Key Vault and is identified by DNS Name.
  7. Нажмите кнопку Просмотр метаданных.Click the View Metadata button.
  8. После загрузки сертификатов выберите нужный из списка (например, UwpSigningCert).After the certificates have finished loading, select the one you want from the list (for example, UwpSigningCert).
  9. Нажмите кнопку ОК.Click OK.

Примечание

Сертификат будет импортирован в локальное хранилище сертификатов, где будет использоваться для подписывания пакета.The certificate will be imported to your local certificate store where it will be used for package signing.

Расшифровка сертификата с помощью пароля из Azure Key VaultDecrypt your certificate with a password from Azure Key Vault

Если для подписывания пакета приложения используется локальный сертификат, защищенный паролем (PFX), управление паролем для расшифровки такого сертификата может оказаться сложной задачей.If you are using a local password-protected certificate (.pfx) to sign your app package, it can be difficult to manage the password used to decrypt it. При импорте сертификата в мастере Создание пакетов приложения вам будет предложено ввести пароль вручную.When you are importing the certificate in the Create App Packages wizard, you will be prompted to manually enter the password. Кроме того, пароль можно выбрать из Azure Key Vault.Alternatively, there is an option to choose the password from Azure Key Vault.

  1. В Visual Studio откройте проект приложения UWP или проект упаковки приложений Windows для классического приложения.Open your UWP application project or desktop Windows application packaging project in Visual Studio.
  2. Выберите элементы Опубликовать -> Пакет -> Создать пакеты приложения… , чтобы открыть мастер Создание пакетов приложения.Select Publish -> Package -> Create app packages... to open the Create App Packages wizard.
  3. На странице Выбрать метод распределения выберите элемент Загрузка неопубликованного приложения.On the Select distribution method page, select Sideloading.
  4. На странице Выбор метода подписывания щелкните команду Выбрать из файла…On the Select signing method page, click Select From File...
  5. Когда откроется диалоговое окно Certificate is password protected (Сертификат защищен паролем), щелкните элемент Select Password From Key Vault (Выбрать пароль из Key Vault).After the Certificate is password protected dialog appears, click Select Password From Key Vault.
  6. Когда откроется диалоговое окно Select a password from Azure Key Vault (Выбор пароля из Azure Key Vault), используйте средство выбора учетной записи, чтобы выбрать ту, для которой настроена политика доступа.After the Select a password from Azure Key Vault dialog appears, use the account picker to choose the account for which you have configured an access policy.
  7. Введите универсальный код ресурса (URI) для Key Vault.Enter the URI of the Key Vault. Его можно найти на странице Обзор для Key Vault в графе DNS-имя.The URI can be found on the Overview page of the Key Vault and is identified by DNS Name.
  8. Нажмите кнопку Просмотр метаданных.Click the View Metadata button.
  9. После загрузки паролей выберите нужный из списка (например, UwpSigningCertPassword).After the passwords have finished loading, select the one you want from the list (for example, UwpSigningCertPassword).
  10. Нажмите кнопку ОК.Click OK.