Share via


Visual Studio がアプリケーションに署名するために使用する証明書の管理

 

Windows のみに適用されます

アプリ パッケージを作成すると、Visual Studio によってアプリに署名されます。Visual Studio によってアプリの署名に使用される証明書は次の方法で管理できます。

  • テスト証明書を生成する

  • 代替証明書を選択する

  • 証明書を更新する

  • 証明書を削除またはエクスポートする

  • Visual Studio によって実行される検証チェックを決定する

  • インストールされているアプリを変更する

注意

署名プロセス中に「指定された証明書は、失効しているか、別の問題があるため、無効です」のようなエラーが表示された場合は、マニフェスト デザイナーを使用して、古い証明書を置き換えるテスト証明書を作成します。

テスト証明書を生成する

既定では、Visual Studio で生成されるすべてのアプリ パッケージは、テスト証明書を使用して署名されています。パッケージを作成すると、署名されたパッケージ自体を含むフォルダーが Visual Studio によって生成されます。フォルダーに含まれる証明書 (.cer) ファイルには、パッケージの署名に使用する公開キーが含まれています。

Visual Studio によってテスト証明書の生成時にプロジェクト ファイルに加えられる変更

証明書の作成プロセスでは、プロジェクト ファイルへのプロパティの追加も行われます。

<PackageCertificateKeyFile>
   RisingStar_TemporaryKey.pfx
</PackageCertificateKeyFile>

PackageCertificateKeyFile の値は、ソース証明書自体の相対パスまたは完全なパスです。

テスト証明書のプロパティと拡張子の値

Visual Studio によって生成されるテスト証明書の Subject フィールドは、ソース マニフェスト (.appxmanifest) ファイルの Identity 要素の Publisher 属性に設定されます。

  • ローカル パッケージを作成する場合は、Publisher 属性がユーザー名の既定値となります。

  • パッケージを作成するか、アプリをパッケージに関連付けると、Publisher 属性が、パッケージ作成中のサインイン時に開発者アカウントから取得した Publisher ID に設定されます。

[基本的な制約] 拡張機能の値は [Subject Type=End Entity] に設定されます。

注意

基本的な制約拡張機能で、証明書のサブジェクトが証明機関 (CA) かどうかがわかります。この拡張機能では、この証明書を含む有効な証明書のパスの最大の深さも定義されます。[基本的な制約] プロパティは、証明された公開キーで証明書の署名を検証できるかどうかを指定します。

[拡張キー使用法] (EKU) 拡張機能の値は [コード署名] に設定されます。

代替証明書を選択する

Visual Studio では、プロジェクトの作成時に証明書が自動的に作成されますが、独自の証明書を作成するか、既存の証明書を使用してパッケージに署名することもできます。

代替証明書を作成または使用するには

  1. ソリューション エクスプローラーで、.appxmanifest ファイルのショートカット メニューを開き、[ファイルを開くアプリケーションの選択][アプリ マニフェスト デザイナー] の順にクリックします。

  2. アプリ マニフェスト デザイナーで、[パッケージ化] タブをクリックし、[証明書の選択] ボタンをクリックします。

  3. [証明書の選択] ダイアログ ボックスで、[証明書の構成] リストを展開し、次のいずれかのオプションを選択します:

    • 証明書ストアから選択
      オペレーティング システムの証明書ストアで Personal 証明書を 1 つ選択します。

    • ファイルから選択
      ファイル システムで既存の証明書ファイルを選択します。

    • テスト証明書の作成
      適切な Publisher ID で証明書を作成します。パスワードを作成することもできます。

どのオプションを選択した場合でも、証明書ファイルがプロジェクトに追加され、それに応じて、PackageCertificateThumbprintPackageCertificateKeyFile の各プロジェクト プロパティが更新されます。

証明書を更新する

Visual Studio で生成される既定の証明書は、その証明書の作成日の後、1 年後に失効します。証明書が失効する前に、アプリ マニフェスト デザイナーを使用して、証明書を再生成する必要があります。または、前の手順で説明したように、別の有効な証明書を指定する必要があります。

証明書を更新するには

  1. ソリューション エクスプローラーで、.appxmanifest ファイルのショートカット メニューを開き、[ファイルを開くアプリケーションの選択][アプリ マニフェスト デザイナー] の順にクリックします。

  2. アプリ マニフェスト デザイナーで、[パッケージ化] タブをクリックし、[証明書の選択] ボタンをクリックします。

  3. [証明書の選択] ダイアログ ボックスで [証明書の構成] リストを展開し、[テスト証明書の作成] を選択します。

  4. [テスト証明書の作成] ダイアログ ボックスで [OK] をクリックします。

    Visual Studio により、新しい有効期限で証明書が再生成されます。

証明書を削除またはエクスポートする

失効した証明書、侵害された証明書、破損した証明書、または別の証明書に置き換えられた証明書を削除またはエクスポートできます。証明書を削除またはエクスポートする方法については、「How to use the Certificates Console (証明書コンソールの使用方法)」を参照してください。

Visual Studio によって実行される検証チェックを決定する

パッケージ化の間、Visual Studio によって多数の検証チェックが実行されて証明書が検証されます。

状況によっては、Visual Studio によってどの証明書が使用されるか、その証明書に対してどの検証チェックが実行されるかをより厳密に制御する必要があります。そのためには、MSBuild プロパティ EnableSigningChecksFalse に設定します。

このプロパティを False に設定すると、Visual Studio によって次の検証チェックのみが実行されます。

  • 秘密キーがあるかどうかを確認します。

  • [拡張キー使用法] プロパティの値に [コード署名] が含まれているかどうかを確認します。

  • 証明書がアクティブか、失効していないか、および取り消されていないかどうかを確認します。

プロパティを True (既定値) に設定すると、次の追加のチェックが Visual Studio によって実行されます。

  • [基本的な制約] 拡張機能の存在とその値を確認します。値は Subject Type=End Entity か、未指定かのいずれかである必要があります。

  • [KeyUsage (KU)] プロパティの値を確認します。[設定解除] または [DigitalSignature] のいずれかである必要があります。

インストールされているアプリを変更する

インストールされているパッケージに含まれるファイルを変更すると、署名の検証によってアプリを起動できなくなる場合があります。パッケージに変更を加えるには、元のソース ファイルを変更し、その後、その変更を加えたパッケージを再配置します。

参照

Windows 10 のユニバーサル Windows アプリをパッケージ化する