Visual Studio 2022 バージョン 17.8 Preview 2 以降では、Azure Key Vault の証明書を使用して UWP およびデスクトップ アプリ パッケージに署名できます。 このツールは、選択した証明書を使用して暗号化署名を行うために、アプリ パッケージ ダイジェスト (ハッシュ) を Azure Key Vault に送信します。 その後、署名されたダイジェストが返され、ローカルでパッケージにアタッチされます。
重要
このプロセスは安全です。 証明書の秘密キーが Azure Key Vault から離れることはありません。
[前提条件]
- Azure アカウント。 Azure アカウントをまだお持ちでない場合は、 ここから始めます。
- Azure Key Vault。 詳細については、「 Key Vault の作成」を参照してください。
- Azure Key Vault にインポートされた有効なパッケージ署名証明書。 Azure Key Vault によって生成された既定の証明書は、コード署名には機能しません。 パッケージ署名証明書を作成する方法の詳細については、「パッケージ署名 用の証明書を作成する」を参照してください。
Key Vault に証明書をインポートする
Key Vault への証明書の追加は非常に簡単です。 この例では、 UwpSigningCert.pfx という有効な UWP コード署名証明書を追加します。
- [Key Vault のプロパティ] ページで、[証明書] を選択 します。
- [Generate/Import](生成/インポート) をクリックします。
- [ 証明書の作成 ] 画面で、次の値を選択します。
- 証明書の作成方法: インポート
- 証明書名: UwpSigningCert
- 証明書ファイルのアップロード: UwpSigningCert.pfx
- 証明書の暗号化を解除する: 証明書がパスワードで保護されている場合は、[ パスワード ] フィールドに入力します。
- Create をクリックしてください。
注
この自己署名証明書は、管理者によってインポートおよび信頼されていない限り、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 アプリケーション パッケージ プロジェクト を開きます。
- [ 発行 ] ->Package ->[アプリ パッケージの作成]... を選択して、 アプリ パッケージの作成 ウィザードを開きます。
- [ 配布方法の選択 ] ページで、[ サイドローディング] を選択します。
- [ 署名方法の選択 ] ページで、[ 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 アプリケーション パッケージ プロジェクト を開きます。
- [ 発行 ] ->Package ->[アプリ パッケージの作成]... を選択して、 アプリ パッケージの作成 ウィザードを開きます。
- [ 配布方法の選択 ] ページで、[ サイドローディング] を選択します。
- [ 署名方法の選択 ] ページで、[ ファイルから選択]をクリックします。
- [ 証明書がパスワードで保護されています ] ダイアログが表示されたら、[ キー コンテナーからパスワードを選択] をクリックします。
- [ Azure Key Vault からパスワードを選択 する] ダイアログが表示されたら、アカウント ピッカーを使用して、アクセス ポリシーを構成したアカウントを選択します。
- Key Vault の URI を入力します。 URI は Key Vault の [概要 ] ページにあり、 DNS 名で識別されます。
- [ メタデータの表示 ] ボタンをクリックします。
- パスワードの読み込みが完了したら、一覧から目的のパスワード ( UwpSigningCertPassword など) を選択します。
- OK をクリックします。
CI/CD シナリオでのサインインを有効にする
CI/CD シナリオでの署名を有効にするには、 DefaultAzureCredential を使用して Azure Key Vault で認証するようにパイプラインを構成する必要があります。 DefaultAzureCredential は、適切なアクセス許可がある場合、パイプライン エージェントの ID を使用して Key Vault にアクセスしようとします。 または、認証に使用するサービス プリンシパルまたはマネージド ID を指定することもできます。