SignTool を使用してアプリ パッケージに署名
SignTool は、アプリ パッケージにデジタル署名したり、証明書をバンドルしたりするために使用されるコマンド ライン ツールです。 証明書は、ユーザーが (テスト目的で) 作成することも、会社が発行することもできます (配布用)。 アプリ パッケージに署名すると、署名後にアプリのデータが変更されていないことを確認しながら、署名したユーザーまたは会社の ID も確認できます。 SignTool では、暗号化または暗号化されていないアプリ パッケージとバンドルに署名できます。
重要
Visual Studio を使用してアプリを開発した場合は、Visual Studio ウィザードを使用してアプリ パッケージを作成して署名することをお勧めします。 詳細については、Visual Studio を使用した UWP アプリのパッケージ化と 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
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 <パスワード>" を省略します。
アプリ パッケージが有効な証明書で署名されたら、パッケージをストアにアップロードする準備が整います。 アプリをストアにアップロードして送信する方法の詳細については、「アプリの申請」を参照してください。