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

SignTool は、アプリ パッケージにデジタル署名したり、証明書をバンドルしたりするために使用されるコマンド ライン ツールです。 証明書は、ユーザーが (テスト目的で) 作成することも、会社が発行することもできます (配布用)。 アプリ パッケージに署名すると、署名後にアプリのデータが変更されていないことを確認しながら、署名したユーザーまたは会社の ID も確認できます。 SignTool では、暗号化または暗号化されていないアプリ パッケージとバンドルに署名できます。

重要

Visual Studio を使用してアプリを開発した場合は、Visual Studio ウィザードを使用してアプリ パッケージを作成して署名することをお勧めします。 詳細については、Visual Studio を使用した UWP アプリのパッケージ化Visual Studio を使用したソース コードからのデスクトップ アプリケーションのパッケージ化に関するページを参照してください。

コード署名と証明書全般の詳細については、「コード署名の概要」を参照してください

前提条件

SignTool の使用

SignTool を 使用すると、ファイルへの署名、署名やタイムスタンプの確認、署名の削除などを行うことができます。 アプリ パッケージに署名するために、sign コマンドに焦点を当てます。 SignTool の詳細については、SignTool リファレンス ページを参照してください。

ハッシュ アルゴリズムを決定する

SignTool を使用してアプリ パッケージまたはバンドルに署名する場合、SignTool使用されるハッシュ アルゴリズムは、アプリのパッケージ化に使用したアルゴリズムと同じである必要があります。 たとえば、MakeAppx.exe を使用して既定の設定でアプリ パッケージを作成した場合は、SignTool を使用するときに SHA256 を指定する必要があります。これは MakeAppx.exe で使用される既定のアルゴリズムであるためです

アプリのパッケージ化中に使用されたハッシュ アルゴリズムを確認するには、アプリ パッケージの内容を抽出し、AppxBlockMap.xml ファイルを調べます。 アプリ パッケージをアンパック/抽出する方法については、「パッケージまたはバンドルからファイルを抽出する」を参照してください。 ハッシュ メソッドは BlockMap 要素内にあり、次の形式です。

<BlockMap xmlns="http://schemas.microsoft.com/appx/2010/blockmap"
HashMethod="http://www.w3.org/2001/04/xmlenc#sha256">

次の表は、各 HashMethod 値とそれに対応するハッシュ アルゴリズムを示しています。

HashMethod 値 ハッシュ アルゴリズム
http://www.w3.org/2001/04/xmlenc#sha256 SHA256
http://www.w3.org/2001/04/xmldsig-more#sha384 SHA384
http://www.w3.org/2001/04/xmlenc#sha512 SHA512

Note

SignTool の既定のアルゴリズムは SHA1 (MakeAppx.exe では使用できません) であるため、SignTool を使用するときは常にハッシュ アルゴリズムを指定する必要があります。

アプリ パッケージに署名する

すべての前提条件を満たして、アプリのパッケージ化に使用されたハッシュ アルゴリズムを決定したら、それに署名する準備が整います。

SignTool パッケージ署名の一般的なコマンド ライン構文は次のとおりです。

SignTool sign [options] <filename(s)>

アプリの署名に使用する証明書は、.pfx ファイルであるか、証明書ストアにインストールされている必要があります。

.pfx ファイルの証明書を使用してアプリ パッケージに署名するには、次の構文を使用します。

SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.appx
SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.msix

この/aオプションを使用すると、SignTool は最適な証明書を自動的に選択できます

証明書が .pfx ファイルでない場合は、次の構文を使用します。

SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.msix

または、次の構文を使用して、証明書の名前ではなく、目的の証明書の <> SHA1 ハッシュを指定することもできます。

SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.msix

その他の例については、「SignTool を使用してファイルに署名する」を参照してください。

一部の証明書ではパスワードが使用されないことに注意してください。 証明書にパスワードがない場合は、サンプル コマンドから "/p <パスワード>" を省略します。

アプリ パッケージが有効な証明書で署名されたら、パッケージをストアにアップロードする準備が整います。 アプリをストアにアップロードして送信する方法の詳細については、「アプリの申請」を参照してください