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

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

バンドル (.msixbundle または .appxbundle) に署名すると、SignTool はバンドルに含まれるすべてのパッケージに再帰的に署名します。 各内部パッケージに個別に署名する必要はありません。

Von Bedeutung

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

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

[前提条件]

  • パッケージ アプリ
    アプリ パッケージを手動で作成する方法の詳細については、「 MakeAppx.exe ツールを使用してアプリ パッケージを作成する」を参照してください。

  • 有効な署名証明書
    有効な署名証明書の作成またはインポートの詳細については、「 パッケージ署名用の証明書を作成またはインポートする」を参照してください。

  • SignTool.exe
    SDK のインストール パスに基づいて、SignTool はWindows 10 PC 上にあります。

    • x86: C:\Program Files (x86)\Windows Kits\10\bin\<sdk version>\x86\SignTool.exe
    • x64: C:\Program Files (x86)\Windows Kits\10\bin\<sdk version>\x64\SignTool.exe
    • Arm64: C:\Program Files (x86)\Windows Kits\10\bin\<sdk version>\arm64\SignTool.exe

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 値とそれに対応するハッシュ アルゴリズムを示しています。

ハッシュメソッドの値 ハッシュ アルゴリズム
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

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 <パスワード>" を省略します。

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