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 コード署名証明書を追加します。
- Key Vault のプロパティ ページで、 [証明書] を選択します。
- [生成/インポート] をクリックします。
- [証明書の作成] 画面で、次の値を選択します。
- [証明書の作成方法] :インポート
- [証明書名] :UwpSigningCert
- [証明書ファイルのアップロード] :UwpSigningCert.pfx
- [Decrypt Certificate] (証明書の暗号化解除):証明書がパスワードで保護されている場合は、それを [パスワード] フィールドに指定します。
- [作成] をクリックします。
注意
自己署名証明書は、管理者によってインポートおよび信頼されている場合を除き、Windows では信頼されません。 自己署名証明書を含めて、すべての証明書のセキュリティを確保してください。
Key Vault のアクセス ポリシーを構成する
[アクセス ポリシー] を使用することにより、Key Vault のコンテンツにアクセスできるユーザーを制御することができます。 Key Vault のアクセス ポリシーは、キー、シークレット、証明書に対して、アクセス許可を個別に付与することができます。 シークレットに対してではなく、キー対してにのみユーザー アクセスを付与することができます。 キー、シークレット、証明書に対するアクセス許可は、コンテナー レベルで管理できます。 詳細については、「Azure Key Vault セキュリティ」を参照してください。
注意
Azure サブスクリプションで Key Vault を作成すると、それはサブスクリプションの Azure Active Directory テナントに自動的に関連付けられます。 Key Vault のコンテンツを管理または取得しようとするユーザーは、Azure AD で認証を行う必要があります。
- Key Vault のプロパティ ページで、 [アクセス ポリシー] を選択します。
- [+ アクセス ポリシーの追加] を選択します。
- [証明書のアクセス許可] ドロップダウンをクリックして、[証明書の管理操作] にある [取得] および [一覧] にチェックを入れます。
- [シークレットのアクセス許可] ドロップダウンをクリックして、[シークレットの管理操作] にある [取得] および [一覧] にチェックを入れます。
- [プリンシパルの選択] をクリックして、アクセスを付与するユーザーを検索し、[選択] をクリックします。
- [追加] をクリックします。
- [保存] をクリックして変更を保存します。
注意
ユーザーにキー コンテナーへの直接アクセスを許可することは推奨されません。 理想としては、ユーザーを 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] をクリックします。