アプリ パッケージの署名証明書を作成する方法

重要

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

 

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

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

知っておくべきこと

テクノロジ

前提条件

手順

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

作成した署名証明書をアプリ パッケージで使用できるようにするには、署名証明書のサブジェクト名が、そのアプリの AppxManifest.xml にある ID 要素の 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 の ID 要素に対して定義される 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 ファイルを .pfx ファイルに変換し、SignTool でアプリ パッケージに署名できるようにします。

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

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

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

サンプル

アプリ パッケージ サンプルを作成する

概念

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

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

アプリ パッケージの署名