Azure Key Vault を使用してパッケージに署名する
Visual Studio 2022 バージョン 17.8 プレビュー 2 以降では、Azure Key Vault に保存されている証明書を使用して UWP およびデスクトップ アプリ パッケージに署名することができます。 このツールは、選択した証明書による暗号化署名のために、アプリ パッケージ ダイジェスト (ハッシュ) を Azure Key Vault に送信します。 その後、署名されたダイジェストが返され、ローカルでパッケージにアタッチされます。
重要
このプロセスは安全です。 証明書の秘密キーは Azure Key Vault で管理されます。
前提条件
- Azure アカウント。 まだ Azure アカウントをお持ちでない場合は、こちらから開始します。
- Azure Key Vault。 詳しくは、キー コンテナーの作成に関するページをご覧ください。
- Azure Key Vault にインポートされた、有効なパッケージの署名証明書。 Azure Key Vault で生成される既定の証明書は、コード署名には使用できません。 パッケージの署名証明書を作成する方法の詳細については、「パッケージ署名用の証明書を作成する」を参照してください。
Key Vault に証明書をインポートする
Key Vault に証明書を追加するのは、とても簡単です。 この例では、UwpSigningCert.pfx という名前の有効な UWP コード署名証明書を追加します。
- Key Vault のプロパティ ページで、 [証明書] を選択します。
- [Generate/Import](生成/インポート) をクリックします。
- [証明書の作成] 画面で、次の値を選択します。
- 証明書の作成方法: Import
- 証明書名: UwpSigningCert
- 証明書ファイルのアップロード: UwpSigningCert.pfx
- 証明書の暗号化の解除: 証明書がパスワードで保護されている場合は、そのパスワードを [パスワード] フィールドに指定します。
- Create をクリックしてください。
Note
自己署名証明書は、管理者によってインポートおよび信頼されている場合を除き、Windows では信頼されません。 自己署名証明書を含めて、すべての証明書のセキュリティを確保してください。
Key Vault のアクセス ポリシーを構成する
[アクセス ポリシー] を使用することにより、Key Vault のコンテンツにアクセスできるユーザーを制御することができます。 Key Vault のアクセス ポリシーは、キー、シークレット、証明書に対して、アクセス許可を個別に付与することができます。 シークレットに対してではなく、キー対してにのみユーザー アクセスを付与することができます。 キー、シークレット、証明書に対するアクセス許可は、コンテナー レベルで管理できます。 詳細については、「Azure Key Vault セキュリティ」を参照してください。
Note
Azure サブスクリプションで Key Vault を作成すると、それはサブスクリプションの Azure Active Directory テナントに自動的に関連付けられます。 Key Vault のコンテンツを管理または取得しようとするユーザーは、Azure AD で認証を行う必要があります。
- Key Vault のプロパティ ページで、[アクセス ポリシー] を選択します。
- [+ アクセス ポリシーの追加] を選択します。
- [証明書のアクセス許可] ドロップダウンをクリックして、[証明書の管理操作] にある [取得] および [一覧] にチェックを入れます。
- [シークレットのアクセス許可] ドロップダウンをクリックして、[シークレットの管理操作] にある [取得] および [一覧] にチェックを入れます。
- [プリンシパルの選択] をクリックして、アクセスを付与するユーザーを検索し、[選択] をクリックします。
- [追加] をクリックします。
- [保存] をクリックして変更を保存します。
Note
ユーザーにキー コンテナーへの直接アクセスを許可することは推奨されません。 理想としては、ユーザーを Azure AD グループに追加し、そのグループにキー コンテナーへのアクセスを許可します。
Visual Studio で Key Vault から証明書を選択する
Visual Studio の [アプリ パッケージの作成] ウィザードでは、アプリ パッケージへの署名に使用される証明書を選択することができます。 Azure Key Vault を使用して、パッケージの署名証明書を選択できます。 証明書を含む Key Vault の URI を指定する必要があり、Visual Studio で認証される Microsoft アカウントには、それにアクセスするための適切なアクセス許可が必要です。
- Visual Studio で、UWP アプリケーション プロジェクトまたはデスクトップの Windows アプリケーション パッケージ プロジェクトを開きます。
- [発行]>[パッケージ]>[アプリ パッケージの作成...] を選択して、[アプリ パッケージの作成] ウィザードを開きます。
- [Select distribution method]\(配布方法の選択\) ページで、[サイドローディング] を選択します。
- [Select signing method]\(署名方法の選択\) ページで、[Select from Azure Key Vault...]\(Azure Key Vault から選択...\) をクリックします。
- [Select a certificate from Azure Key Vault]\(Azure Key Vault から証明書を選択する\) ダイアログが表示されたら、アカウント ピッカーを使用して、アクセス ポリシーの構成対象であるアカウントを選択します。
- Key Vault の URI を入力します。 URI は Key Vault の [概要] ページにあり、[DNS 名] で識別できます。
- [メタデータの表示] ボタンをクリックします。
- 証明書の読み込みが完了したら、一覧から目的のものを選択します (UwpSigningCert など)。
- OK をクリックします。
Azure Key Vault からのパスワードを使用して、証明書の暗号化を解除する
ローカル パスワードで保護された証明書 (.pfx) を使用してアプリ パッケージに署名する場合、暗号化の解除に使用するパスワードを管理することは難しくなります。 [アプリ パッケージの作成] ウィザードで証明書をインポートする際に、パスワードを手動でインストールするように求められます。 代わりに、Azure Key Vault からパスワードを選択することもできます。
- Visual Studio で、UWP アプリケーション プロジェクトまたはデスクトップの Windows アプリケーション パッケージ プロジェクトを開きます。
- [発行]>[パッケージ]>[アプリ パッケージの作成...] を選択して、[アプリ パッケージの作成] ウィザードを開きます。
- [Select distribution method]\(配布方法の選択\) ページで、[サイドローディング] を選択します。
- [Select signing method]\(署名方法の選択\) ページで、[ファイルから選択...] をクリックします。
- [Certificate is password protected]\(証明書はパスワードで保護されています\) ダイアログが表示されたら、[Select Password From Key Vault]\(Key Vault からパスワードを選択する\) をクリックします。
- [Select a password from Azure Key Vault]\(Azure Key Vault からパスワードを選択する\) ダイアログが表示されたら、アカウント ピッカーを使用して、アクセス ポリシーの構成対象であるアカウントを選択します。
- Key Vault の URI を入力します。 URI は Key Vault の [概要] ページにあり、[DNS 名] で識別できます。
- [メタデータの表示] ボタンをクリックします。
- パスワードの読み込みが完了したら、一覧から目的のものを選択します (UwpSigningCertPassword など)。
- OK をクリックします。
CI/CD シナリオでのサインインを有効にする
CI/CD シナリオでのサインインを有効にするには、DefaultAzureCredential を使用して Azure Key Vault で認証するようにパイプラインを構成する必要があります。 DefaultAzureCredential は、適切なアクセス許可がある場合、パイプライン エージェントの ID を使用してキー コンテナーにアクセスしようとします。 別の方法として、認証に使用するサービス プリンシパルまたはマネージド ID を指定することもできます。