次の方法で共有


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

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 コード署名証明書を追加します。

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

この自己署名証明書は、管理者によってインポートおよび信頼されていない限り、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. 追加をクリックします。
  7. [保存] をクリックして、変更を 保存してください。

ユーザーにキー コンテナーへの直接アクセス権を付与 することはお勧めしません。 理想的には、ユーザーを Azure AD グループに追加する必要があります。このグループには、キー コンテナーへのアクセス権が付与されます。

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

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

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

CI/CD シナリオでのサインインを有効にする

CI/CD シナリオでの署名を有効にするには、 DefaultAzureCredential を使用して Azure Key Vault で認証するようにパイプラインを構成する必要があります。 DefaultAzureCredential は、適切なアクセス許可がある場合、パイプライン エージェントの ID を使用して Key Vault にアクセスしようとします。 または、認証に使用するサービス プリンシパルまたはマネージド ID を指定することもできます。