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

Visual Studio 2019 バージョン 16.6 プレビュー 3 以降のバージョンでは、開発およびテストのシナリオで、Azure Key Vault に保存されている証明書を使用して UWP およびデスクトップ アプリ パッケージに署名することができます。 このツールは、Azure Key Vault から公開キーと秘密キーを抽出して開発用コンピューターの証明書ストアに読み込み、SignTool.exe を使用してパッケージに署名します。

重要

この記事で説明するプロセスは、開発およびテストのシナリオのみを対象としています。 このプロセスは、配布に使用される秘密キーに関するベスト プラクティスではありません。 セキュリティのベスト プラクティスを実施するには、ご利用の継続的インテグレーションおよび継続的配置 (CI/CD) プラットフォームで推奨されるツールのみを使用して配布のための秘密キーを扱う必要があります。

前提条件

  • Azure アカウント。 まだ Azure アカウントをお持ちでない場合は、こちらから開始します。
  • Azure Key Vault。 詳しくは、キー コンテナーの作成に関するページをご覧ください。
  • Azure Key Vault にインポートされた、有効なパッケージの署名証明書。 Azure Key Vault で生成される既定の証明書は、コード署名には使用できません。 パッケージの署名証明書を作成する方法の詳細については、「パッケージ署名用の証明書を作成する」を参照してください。

Key Vault に証明書をインポートする

Key Vault に証明書を追加するのは、とても簡単です。 この例では、UwpSigningCert.pfx という名前の有効な UWP コード署名証明書を追加します。

  1. Key Vault のプロパティ ページで、 [証明書] を選択します。
  2. [生成/インポート] をクリックします。
  3. [証明書の作成] 画面で、次の値を選択します。
    • [証明書の作成方法] :インポート
    • [証明書名] :UwpSigningCert
    • [証明書ファイルのアップロード] :UwpSigningCert.pfx
    • [Decrypt Certificate] (証明書の暗号化解除):証明書がパスワードで保護されている場合は、それを [パスワード] フィールドに指定します。
  4. [作成] をクリックします。

注意

自己署名証明書は、管理者によってインポートおよび信頼されている場合を除き、Windows では信頼されません。 自己署名証明書を含めて、すべての証明書のセキュリティを確保してください。

Key Vault のアクセス ポリシーを構成する

[アクセス ポリシー] を使用することにより、Key Vault のコンテンツにアクセスできるユーザーを制御することができます。 Key Vault のアクセス ポリシーは、キー、シークレット、証明書に対して、アクセス許可を個別に付与することができます。 シークレットに対してではなく、キー対してにのみユーザー アクセスを付与することができます。 キー、シークレット、証明書に対するアクセス許可は、コンテナー レベルで管理できます。 詳細については、「Azure Key Vault セキュリティ」を参照してください。

注意

Azure サブスクリプションで Key Vault を作成すると、それはサブスクリプションの Azure Active Directory テナントに自動的に関連付けられます。 Key Vault のコンテンツを管理または取得しようとするユーザーは、Azure AD で認証を行う必要があります。

  1. Key Vault のプロパティ ページで、 [アクセス ポリシー] を選択します。
  2. [+ アクセス ポリシーの追加] を選択します。
  3. [キーのアクセス許可] ドロップダウンをクリックして、 [キーの管理操作] にある [取得] および [一覧] にチェックを入れます。
  4. [プリンシパルの選択] をクリックして、アクセスを付与するユーザーを検索し、 [選択] をクリックします。
  5. [追加] をクリックします。
  6. [保存] をクリックして変更を保存します。

注意

ユーザーにキー コンテナーへの直接アクセスを許可することは 推奨されません。 理想としては、ユーザーを Azure AD グループに追加し、そのグループにキー コンテナーへのアクセスを許可します。

Visual Studio で Key Vault から証明書を選択する

Visual Studio の [アプリ パッケージの作成] ウィザードでは、アプリ パッケージへの署名に使用される証明書を選択することができます。 Azure Key Vault を使用して、パッケージの署名証明書を選択できます。 証明書を含む Key Vault の URI を指定する必要があり、Visual Studio で認証される Microsoft アカウントには、それにアクセスするための適切なアクセス許可が必要です。

  1. Visual Studio で、UWP アプリケーション プロジェクトまたはデスクトップの Windows アプリケーション パッケージ プロジェクト を開きます。
  2. [発行] -> [パッケージ] -> [アプリ パッケージの作成...] を選択して、 [アプリ パッケージの作成] ウィザードを開きます。
  3. [Select distribution method] (配布方法の選択) ページで、 [サイドローディング] を選択します。
  4. [Select signing method] (署名方法の選択) ページで、 [Select from Azure Key Vault...] (Azure Key Vault から選択...) をクリックします。
  5. [Select a certificate from Azure Key Vault] (Azure Key Vault から証明書を選択する) ダイアログが表示されたら、アカウント ピッカーを使用して、アクセス ポリシーの構成対象であるアカウントを選択します。
  6. Key Vault の URI を入力します。 URI は Key Vault の [概要] ページにあり、 [DNS 名] で識別できます。
  7. [メタデータの表示] ボタンをクリックします。
  8. 証明書の読み込みが完了したら、一覧から目的のものを選択します (UwpSigningCert など)。
  9. [OK] をクリックします。

注意

証明書がローカルの証明書ストアにインポートされ、パッケージの署名に使用されるようになります。

Azure Key Vault からのパスワードを使用して、証明書の暗号化を解除する

ローカル パスワードで保護された証明書 (.pfx) を使用してアプリ パッケージに署名する場合、暗号化の解除に使用するパスワードを管理することは難しくなります。 [アプリ パッケージの作成] ウィザードで証明書をインポートする際に、パスワードを手動でインストールするように求められます。 代わりに、Azure Key Vault からパスワードを選択することもできます。

  1. Visual Studio で、UWP アプリケーション プロジェクトまたはデスクトップの Windows アプリケーション パッケージ プロジェクト を開きます。
  2. [発行] -> [パッケージ] -> [アプリ パッケージの作成...] を選択して、 [アプリ パッケージの作成] ウィザードを開きます。
  3. [Select distribution method] (配布方法の選択) ページで、 [サイドローディング] を選択します。
  4. [Select signing method] (署名方法の選択) ページで、 [ファイルから選択...] をクリックします。
  5. [Certificate is password protected] (証明書はパスワードで保護されています) ダイアログが表示されたら、 [Select Password From Key Vault] (Key Vault からパスワードを選択する) をクリックします。
  6. [Select a password from Azure Key Vault] (Azure Key Vault からパスワードを選択する) ダイアログが表示されたら、アカウント ピッカーを使用して、アクセス ポリシーの構成対象であるアカウントを選択します。
  7. Key Vault の URI を入力します。 URI は Key Vault の [概要] ページにあり、 [DNS 名] で識別できます。
  8. [メタデータの表示] ボタンをクリックします。
  9. パスワードの読み込みが完了したら、一覧から目的のものを選択します (UwpSigningCertPassword など)。
  10. [OK] をクリックします。