Azure Key Vault を使用してパッケージに署名するSign packages with Azure Key Vault

Visual Studio 2019 バージョン 16.6 プレビュー 3 以降のバージョンでは、開発およびテストのシナリオで、Azure Key Vault に保存されている証明書を使用して UWP およびデスクトップ アプリ パッケージに署名することができます。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. まだ Azure アカウントをお持ちでない場合は、こちらから開始します。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 Vault に証明書をインポートするImport a certificate to your Key Vault

Key Vault に証明書を追加するのは、とても簡単です。Adding a certificate to your Key Vault is very simple. この例では、UwpSigningCert.pfx という名前の有効な UWP コード署名証明書を追加します。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. [生成/インポート] をクリックします。Click on Generate/Import.
  3. [証明書の作成] 画面で、次の値を選択します。On the Create a certificate screen, choose the following values:
    • [証明書の作成方法] :インポートMethod of Certificate Creation: Import
    • [証明書名] :UwpSigningCertCertificate Name: UwpSigningCert
    • [証明書ファイルのアップロード] :UwpSigningCert.pfxUpload Certificate File: UwpSigningCert.pfx
    • [Decrypt Certificate] (証明書の暗号化解除):証明書がパスワードで保護されている場合は、それを [パスワード] フィールドに指定します。Decrypt Certificate: If your certificate is password-protected, provide it in the Password field.
  4. [作成] をクリックします。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 Vault のアクセス ポリシーを構成するConfigure 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.

注意

Azure サブスクリプションで Key Vault を作成すると、それはサブスクリプションの 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 のコンテンツを管理または取得しようとするユーザーは、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.

Visual Studio で Key Vault から証明書を選択するSelect 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. 証明書を含む Key Vault の URI を指定する必要があり、Visual Studio で認証される Microsoft アカウントには、それにアクセスするための適切なアクセス許可が必要です。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. [Select distribution method] (配布方法の選択) ページで、 [サイドローディング] を選択します。On the Select distribution method page, select Sideloading.
  4. [Select signing method] (署名方法の選択) ページで、 [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. Key Vault の URI を入力します。Enter the URI of the Key Vault. URI は 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. [OK] をクリックします。Click OK.

注意

証明書がローカルの証明書ストアにインポートされ、パッケージの署名に使用されるようになります。The certificate will be imported to your local certificate store where it will be used for package signing.

Azure Key Vault からのパスワードを使用して、証明書の暗号化を解除するDecrypt 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. [Select distribution method] (配布方法の選択) ページで、 [サイドローディング] を選択します。On the Select distribution method page, select Sideloading.
  4. [Select signing method] (署名方法の選択) ページで、 [ファイルから選択...] をクリックします。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. Key Vault の URI を入力します。Enter the URI of the Key Vault. URI は 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. [OK] をクリックします。Click OK.