アプリケーション パッケージへの署名 (Windows ストア アプリ)

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

テスト証明書の生成

証明書ファイル (.pfx) は、プロジェクトの作成時に生成され、プロジェクトに追加されます。

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

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

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

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

<PackageCertificateKeyFile> RisingStar_TemporaryKey.pfx </PackageCertificateKeyFile>

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

証明書が存在しない場合、[ストア] メニューからパッケージをビルドすると証明書が作成されますが、コマンド プロンプトでビルドしたときには作成されません。Visual Studio で証明書を作成すると、次のプロパティの値が設定されます。

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

    注意

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

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

証明書は、作成された日の後、1 年間だけ有効です。証明書を更新する方法については、「証明書の更新」を参照してください。

ヒント

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

証明書の検証

パッケージ化の間、Visual Studio は、指定された証明書を次の方法で検証します。

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

  • [拡張キー使用法] プロパティの値を確認します。ここには [コード署名] が含まれている必要があり、[ライフタイム署名] が含まれていることもあります。他の EKU はすべて禁止されています。

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

  • 秘密キーがあることを確認します。

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

状況によっては、どの証明書を使用するか、またその証明書に対してどの検証チェックを実行するかをより厳密に制御しなければならないことがあります。MSBuild プロパティ EnableSigningChecks は、上記の証明書チェックのうちどれを実行するかを制御します。プロパティを True (既定値) に設定すると、すべてのチェックが Visual Studio によって実行されます。プロパティを False に設定すると、Visual Studio では次のタスクのみが実行されます。

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

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

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

注意

EnableSignignChecks が False に設定された場合、カスタム証明書がアプリ パッケージをインストールするスクリプトに必要なすべての規則に従っていないため、PowerShell スクリプトが動作しなくなる可能性があります。詳細については、「アプリケーション パッケージのローカルな共有 (Windows ストア アプリ)」を参照してください。

代替証明書の選択

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

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

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

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

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

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

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

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

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

注意

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

証明書の更新

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

証明書を更新するには

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

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

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

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

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

証明書の削除またはエクスポート

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

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

インストールされているパッケージに含まれるファイルを変更すると、署名の検証によってアプリを起動できなくなる場合があります。パッケージを変更するには、開発者用ライセンスを使用して元のソース ファイルを変更し、その後で変更済みのパッケージを再配置します。開発者用ライセンスの詳細については、「Get a developer license (Windows Store apps) (開発者ライセンスの取得 (Windows ストア アプリ))」を参照してください。

参照

概念

パッケージ マニフェストのオーバーライド (Windows ストア アプリ)

Visual Studio 2012 を使用した Windows ストア アプリのパッケージ化