SignTool の既知の問題とトラブルシューティングKnown issues and troubleshooting for SignTool

SignTool の使用時に発生する最も一般的なエラーは内部エラーで、代表的なエラーは次の通りです。The most common types of errors when using SignTool are internal and typically look something like this:

SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024885 / 0x8007000B) 

0x80080206 (APPX_E_CORRUPT_CONTENT) など、エラー コードが 0x8008 で始まる場合、署名対象のパッケージは無効です。If the error code starts with 0x8008, such as 0x80080206 (APPX_E_CORRUPT_CONTENT), the package being signed is invalid. このようなエラーが発生した場合は、パッケージをビルドし直し、 SignTool をもう一度実行してください。If you get this type of error you must rebuild the package and run SignTool again.

SignTool には、証明書のエラーとフィルタリングを表示できるデバッグ オプションがあります。SignTool has a debug option available to show certificate errors and filtering. デバッグ機能を使用するには、/debug オプションを sign の直後に指定し、その後ろに完全な SignTool コマンドを指定します。To use the debugging feature, place the /debug option directly after sign, followed by the full SignTool command.

SignTool sign /debug [options]

さらに一般的なエラーとしては、0x8007000B があります。A more common error is 0x8007000B. この種類のエラーについては、イベント ログで詳細を確認してください。For this type of error, you can find more information in the event log.

イベント ログで詳細を参照するには、次の手順を実行します。To find more information in the event log:

  • Eventvwr.msc を実行します。Run Eventvwr.msc
  • イベント ログを開きます。[イベント ビューアー (ローカル)]、[アプリケーションとサービス ログ]、[Microsoft]、[Windows]、[AppxPackagingOM]、[Microsoft-Windows-AppxPackaging/稼働中] の順に展開します。Open the event log: Event Viewer (Local) -> Applications and Services Logs -> Microsoft -> Windows -> AppxPackagingOM -> Microsoft-Windows-AppxPackaging/Operational
  • 最新のエラー イベントを検索します。Find the most recent error event

内部エラーの 0x8007000B は、通常、次のいずれかの値に対応しています。The internal error 0x8007000B usually corresponds to one of these values:

イベント IDEvent ID イベント文字列の例Example event string 提案される解決策Suggestion
150150 エラー 0x8007000B: アプリ マニフェストの発行元の名前 (CN=Contoso) は、署名証明書のサブジェクト名 (CN=Contoso, C=US) と同じにする必要があります。error 0x8007000B: The app manifest publisher name (CN=Contoso) must match the subject name of the signing certificate (CN=Contoso, C=US). アプリ マニフェストの発行元の名前は、署名のサブジェクト名と完全に一致する必要があります。The app manifest publisher name must exactly match the subject name of the signing.
151151 エラー 0x8007000B: 指定されている署名ハッシュ方式 (SHA512) は、アプリ バンドルのブロック マップで使用されているハッシュ方式 (SHA256) と同じにする必要があります。error 0x8007000B: The signature hash method specified (SHA512) must match the hash method used in the app package block map (SHA256). /fd パラメーターに指定されている hashAlgorithm が、正しくありません。The hashAlgorithm specified in the /fd parameter is incorrect. (アプリ パッケージの作成に使用した) アプリ パッケージのブロック マップと一致する hashAlgorithm を使用して SignTool を再実行してください。Rerun SignTool using hashAlgorithm that matches the app package block map (used to create the app package)
152152 エラー 0x8007000B: アプリ パッケージの内容は、そのブロック マップに対して検証する必要があります。error 0x8007000B: The app package contents must validate against its block map. アプリ パッケージは破損しています。再ビルドして、新しいブロック マップを生成する必要があります。The app package is corrupt and needs to be rebuilt to generate a new block map. アプリ パッケージの作成の詳細については、「MakeAppx.exe ツールを使ったアプリ パッケージの作成」を参照してください。For more about creating an app package, see Create an app package with the MakeAppx.exe tool

もう1つの一般的なエラーは、0x80080057 です。Another common error is 0x80080057. Windows の SignTool ツールを使用して、ポータブル実行可能 (PE) ファイルに署名しようとすると、次の問題が発生する場合があります。You may experience the following issues when you try to sign a Portable Executable (PE) file by using the SignTool tool on Windows:

  • 4ギガバイト (GB) 以上の PE ファイルに署名できませんでした。Failure to sign a PE file that is 4 gigabytes (GB) or larger. 署名しようとすると、"無効なパラメーター (0x80080057)" というエラーメッセージが表示されます。When you try to sign, you receive an "invalid parameter (0x80080057)" error message.

  • 4 GB を超えるファイルの場合、SignTool がファイルに正常に署名する場合でも、生成されるハッシュが正確でない場合があります。For files that are larger than 4 GB, the generated hash may not be accurate even though SignTool may otherwise successfully sign the file.

    注意

    これは、特に .cat ファイルの場合に当てはまります。This is especially true of .cat files.

この問題は、.exe、.sys などの PE ファイルで発生します。This issue occurs for PE files such as .exe, .sys, and so on. この問題は、イメージのサイズを指定する PE ヘッダーの ULONG 変数が原因で発生します。This issue occurs because of a ULONG variable in the PE header that specifies the image size. (Vista 以前のバージョンなど、ダウンレベルのオペレーティングシステムでは、イメージのサイズは 2 GB です)。これは、1996以降の設計上の制限です。(The image size is 2 GB for down-level operating systems, such as Vista and earlier versions.) This is a design limitation since 1996. この値の上限は、PE ファイルの場合は 4 GB (.exe や .sys など) です。The maximum limit for this value is 4 GB for PE files, such as .exe and .sys. 通常、.cat ファイルは署名されていますが、生成される内部ハッシュが正確でない場合があります。Although .cat files are usually signable, the internal hash that's generated may not be accurate.

この問題を回避するには、署名しようとしているすべての PE ファイルが 4 GB 未満であることを確認します。To work around this issue, make sure that any PE file that you try to sign is less than 4 GB. 旧バージョンとの互換性の問題のため、バックポートも永続的な修正もできません。Because of backward compatibility risks, neither backports nor a permanent fix are currently possible. ただし、この問題は調査中です。However, this issue is being investigated.

注意

この問題は、SignTool に固有のものではありません。This issue isn't specific to SignTool. PE ヘッダーの設計は、使用されているツールに関係なく、Windows 7 以降の Windows バージョンでは 4 GB に制限されています。The design of the PE header is limited to 4 GB for Windows 7 and later Windows versions, regardless of which tool is used.

よく寄せられる質問 (FAQ)Frequently asked questions (FAQ)

Q1: Windows 上のデジタル署名 (およびタイムスタンプカウンター-署名) の現在の正式なファイルサイズの上限は何ですか。Q1: What is the current, official file size limit for a digital signature (and time stamp counter-signature) on Windows?

A1: .exe や .sys などの PE ファイルの場合、署名の最大ファイルサイズは 4 GB です。A1: For PE files such as .exe and .sys, the maximum file size for signing is 4 GB.

Q2: Windows Server 2016 など、大きなファイルに署名するための最も多くの機能を備えた Windows の特定のバージョンがあるかどうか。Q2: Is there a particular version of Windows, such as Windows Server 2016, that has the most capability to sign large files?

A2: いいえ。この問題は、Windows のすべてのバージョンに影響します。A2: No, the issue affects all versions of Windows.

Q3:64 ビット版の Signtool では、32ビット版よりもこの機能のサポートが強化されていますか。Q3: Does the 64-bit version of Signtool have better support for this functionality than the 32-bit version does?

A: いいえ。64ビットバージョンの SignTool では、32ビットバージョンと同じ値が使用されます。A: No, the 64-bit version of SignTool uses the same values as the 32-bit version. そのため、この問題は64ビットのままです。Therefore, the issue remains in 64-bit.

Q4:32 ビット版の Windows を使用しているお客様が64ビット版の SignTool を使用して署名されたファイルを使用しようとすると、問題が発生する可能性がありますか。Q4: Would customers who are using a 32-bit version of Windows potentially experience issues if they try to use files that were signed by using the 64-bit version of SignTool?

A:いいえ。A: No. ただし、使用されている SignTool のバージョンに関係なく、制限は残ります。However, the limitations would remain regardless of which version of SignTool is used.

Q5: 異なる署名ツールまたはメソッドを完全に使用する必要がありますか。Q5: Should we be using a different signing tool or method altogether?

A: 現在、デジタル署名に代わる方法はありません。A: We currently have no alternative method for digital signing.