How to create an app package signing certificate (アプリ パッケージ署名証明書を作成する方法)

重要

MakeCert.exeは非推奨です。 証明書の作成に関する現在のガイダンスについては、「 パッケージ署名用の証明書を作成する」を参照してください。

 

MakeCert.exePvk2Pfx.exeを使用してテスト コード署名証明書を作成し、Windows アプリ パッケージに署名できるようにする方法について説明します。

パッケージ化された Windows アプリを展開する前に、デジタル署名する必要があります。 Microsoft Visual Studio 2012 を使用してアプリ パッケージを作成して署名しない場合は、独自のコード署名証明書を作成して管理する必要があります。 証明書は、Windows Driver Kit (WDK) の MakeCert.exePvk2Pfx.exe を使用して作成できます。 その後、証明書を使用してアプリ パッケージに署名し、テスト用にローカルにデプロイできます。

知っておくべきこと

テクノロジ

前提条件

Instructions

手順 1: パッケージの発行元名を確認する

作成した署名証明書を署名するアプリ パッケージで使用できるようにするには、署名証明書のサブジェクト名が、そのアプリのAppxManifest.xmlの Identity 要素の Publisher 属性と一致している必要があります。 たとえば、AppxManifest.xmlに次のものが含まれているとします。

  <Identity Name="Contoso.AssetTracker" 
    Version="1.0.0.0" 
    Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>

次の手順で MakeCert ユーティリティで指定した publisherName パラメーターには、"CN=Contoso Software, O=Contoso Corporation, C=US" を使用します。

Note

このパラメーター文字列は引用符で囲んで指定され、大文字と小文字と空白の両方が区別されます。

 

AppxManifest.xmlの Identity 要素に対して定義される Publisher 属性文字列は、証明書のサブジェクト名に MakeCert /n パラメーターで指定した文字列と同じである必要があります。 可能な場合は、文字列をコピーして貼り付けます。

手順 2: MakeCert.exeを使用して秘密キーを作成する

MakeCert ユーティリティを使用して、自己署名テスト証明書と秘密キーを作成します。

MakeCert /n publisherName /r /h 0 /eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" /e 
expirationDate /sv MyKey.pvk MyKey.cer

このコマンドを実行すると、.pvk ファイルのパスワードを入力するように求められます。 強力なパスワードを選択し、秘密キーを安全な場所に保管することをお勧めします。

これらの理由から、前の例で推奨されるパラメーターを使用することをお勧めします。

/R

自己署名ルート証明書を作成します。 これにより、テスト証明書の管理が簡略化されます。

/h 0

証明書の基本的な制約をエンド エンティティとしてマークします。 これにより、証明書が他の証明書を発行できる証明機関 (CA) として使用されるのを防ぐことができます。

/Eku

証明書の拡張キー使用法 (EKU) の値を設定します。

Note

2 つのコンマ区切りの値の間にスペースを入れないでください。

 

  • 1.3.6.1.5.5.7.3.3 は、証明書がコード署名に有効であることを示します。 証明書の使用目的を制限するには、常にこの値を指定します。
  • 1.3.6.1.4.1.311.10.3.13 は、証明書が有効期間署名を尊重していることを示します。 通常、署名にタイムスタンプが設定されている場合、タイムスタンプが設定された時点で証明書が有効である限り、証明書の有効期限が切れた場合でも署名は有効なままになります。 この EKU では、署名にタイムスタンプが設定されているかどうかに関係なく、署名の有効期限が強制的に切れます。

/E

証明書の有効期限を設定します。 expirationDate パラメーターの値を mm/dd/yyyy 形式で指定します。 有効期限は、テスト目的で必要な期間 (通常は 1 年未満) を選択することをお勧めします。 この有効期限は、有効期間署名 EKU と組み合わせることで、証明書が侵害され、誤用される可能性がある期間を制限するのに役立ちます。

その他のオプションの詳細については、「 MakeCert」を参照してください。

手順 3: Pvk2Pfx.exeを使用して個人情報交換 (.pfx) ファイルを作成する

Pvk2Pfx ユーティリティを使用して、MakeCert によって作成された .pvk ファイルと .cer ファイルを、SignTool で使用してアプリ パッケージに署名できる .pfx ファイルに変換します。

Pvk2Pfx /pvk MyKey.pvk /pi pvkPassword /spc MyKey.cer /pfx MyKey.pfx [/po pfxPassword]

MyKey.pvk ファイルと MyKey.cer ファイルは、前の手順で作成MakeCert.exeのと同じファイルです。 オプションの /po パラメーターを使用すると、結果の .pfx に別のパスワードを指定できます。それ以外の場合、.pfx のパスワードは MyKey.pvk と同じです。

その他のオプションの詳細については、「 Pvk2Pfx」を参照してください。

解説

.pfx ファイルを作成したら、 SignTool で ファイルを使用してアプリ パッケージに署名できます。 詳細については、「 SignTool を使用してアプリ パッケージに署名する方法」を参照してください。 ただし、ローカル コンピューターの信頼された証明書ストアにアプリ パッケージをインストールするまで、証明書はローカル コンピューターによってアプリ パッケージの展開に対して信頼されません。 Windows に付属 するCertutil.exeを使用できます。

WindowsCertutil.exeを使用して証明書をインストールするには

  1. 管理者としてCmd.exeを実行します。

  2. 次のコマンドを実行します。

    Certutil -addStore TrustedPeople MyKey.cer
    

証明書が使用されなくなった場合は、証明書を削除することをお勧めします。 同じ管理者コマンド プロンプトから、次のコマンドを実行します。

Certutil -delStore TrustedPeople certID

certID は証明書のシリアル番号です。 次のコマンドを実行して、証明書のシリアル番号を確認します。

Certutil -store TrustedPeople

セキュリティに関する考慮事項

ローカル コンピューターの証明書ストアに証明書を追加することによって、コンピューター上のすべてのユーザーの証明書の信頼に影響します。 アプリ パッケージをテストするために必要なコード署名証明書は、信頼されたPeople証明書ストアにインストールすることをお勧めします。 これらの証明書が不要になった場合は、システムの信頼を侵害するために使用されないように、これらの証明書を速やかに削除します。

サンプル

アプリ パッケージの作成のサンプル

概念

コード署名のベスト プラクティス

SignTool を使用してアプリ パッケージに署名する方法

アプリ パッケージの署名