Problemi noti e risoluzione dei problemi per SignToolKnown issues and troubleshooting for SignTool

I tipi di errori più comuni quando si usa SignTool sono interni e in genere sono simili ai seguenti: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) 

Se il codice di errore inizia con 0x8008, ad esempio 0x80080206 (APPX_E_CORRUPT_CONTENT), il pacchetto firmato non è valido.If the error code starts with 0x8008, such as 0x80080206 (APPX_E_CORRUPT_CONTENT), the package being signed is invalid. Se si ottiene questo tipo di errore, è necessario ricompilare il pacchetto ed eseguire di nuovo SignTool .If you get this type of error you must rebuild the package and run SignTool again.

SignTool dispone di un'opzione di debug disponibile per visualizzare gli errori e i filtri del certificato.SignTool has a debug option available to show certificate errors and filtering. Per usare la funzionalità di debug, inserire l' /debug opzione immediatamente dopo sign , seguito dal comando completo di SignTool .To use the debugging feature, place the /debug option directly after sign, followed by the full SignTool command.

SignTool sign /debug [options]

Un errore più comune è 0x8007000B.A more common error is 0x8007000B. Per questo tipo di errore, è possibile trovare altre informazioni nel registro eventi.For this type of error, you can find more information in the event log.

Per trovare ulteriori informazioni nel registro eventi:To find more information in the event log:

  • Eseguire eventvwr. mscRun Eventvwr.msc
  • Aprire il registro eventi: Visualizzatore eventi (locale)-> registri applicazioni e servizi-> Microsoft-> Windows-> AppxPackagingOM-> Microsoft-Windows-AppxPackaging/OperationalOpen the event log: Event Viewer (Local) -> Applications and Services Logs -> Microsoft -> Windows -> AppxPackagingOM -> Microsoft-Windows-AppxPackaging/Operational
  • Trovare l'evento di errore più recenteFind the most recent error event

L'errore interno 0x8007000B in genere corrisponde a uno di questi valori:The internal error 0x8007000B usually corresponds to one of these values:

ID eventoEvent ID Esempio di stringa di eventoExample event string SuggerimentoSuggestion
150150 errore 0x8007000B: il nome del server di pubblicazione del manifesto dell'applicazione (CN = Contoso) deve corrispondere al nome del soggetto del certificato di firma (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). Il nome del server di pubblicazione del manifesto dell'applicazione deve corrispondere esattamente al nome del soggetto della firma.The app manifest publisher name must exactly match the subject name of the signing.
151151 errore 0x8007000B: il metodo hash della firma specificato (SHA512) deve corrispondere al metodo hash usato nella mappa del blocco del pacchetto dell'app (SHA256).error 0x8007000B: The signature hash method specified (SHA512) must match the hash method used in the app package block map (SHA256). L'oggetto hashAlgorithm specificato nel parametro/FD non è corretto.The hashAlgorithm specified in the /fd parameter is incorrect. Eseguire di nuovo SignTool usando HashAlgorithm che corrisponde alla mappa del blocco del pacchetto dell'app (usata per creare il pacchetto dell'app)Rerun SignTool using hashAlgorithm that matches the app package block map (used to create the app package)
152152 errore 0x8007000B: il contenuto del pacchetto dell'app deve essere convalidato rispetto alla mappa dei blocchi.error 0x8007000B: The app package contents must validate against its block map. Il pacchetto dell'app è danneggiato e deve essere ricompilato per generare una nuova mappa a blocchi.The app package is corrupt and needs to be rebuilt to generate a new block map. Per altre informazioni sulla creazione di un pacchetto dell'app, vedere creare un pacchetto dell'app con lo strumento MakeAppx.exeFor more about creating an app package, see Create an app package with the MakeAppx.exe tool

Un altro errore comune è 0x80080057.Another common error is 0x80080057. Si potrebbero verificare i seguenti problemi quando si tenta di firmare un file eseguibile portabile (PE) utilizzando lo strumento SignTool in Windows:You may experience the following issues when you try to sign a Portable Executable (PE) file by using the SignTool tool on Windows:

  • Errore durante la firma di un file PE di 4 gigabyte (GB) o superiore.Failure to sign a PE file that is 4 gigabytes (GB) or larger. Quando si tenta di firmare, viene visualizzato il messaggio di errore "parametro non valido (0x80080057)".When you try to sign, you receive an "invalid parameter (0x80080057)" error message.

  • Per i file con dimensioni maggiori di 4 GB, l'hash generato potrebbe non essere accurato anche se SignTool può altrimenti firmare correttamente il file.For files that are larger than 4 GB, the generated hash may not be accurate even though SignTool may otherwise successfully sign the file.

    Nota

    Questo vale soprattutto per i file. cat.This is especially true of .cat files.

Questo problema si verifica per i file PE, ad esempio. exe,. sys e così via.This issue occurs for PE files such as .exe, .sys, and so on. Questo problema si verifica a causa di una variabile ULONG nell'intestazione PE che specifica la dimensione dell'immagine.This issue occurs because of a ULONG variable in the PE header that specifies the image size. Le dimensioni dell'immagine sono pari a 2 GB per i sistemi operativi di livello inferiore, ad esempio vista e versioni precedenti. Si tratta di una limitazione della progettazione a partire da 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. Il limite massimo per questo valore è 4 GB per i file PE, ad esempio. exe e. sys.The maximum limit for this value is 4 GB for PE files, such as .exe and .sys. Sebbene i file con estensione cat siano in genere firmabili, l'hash interno generato potrebbe non essere accurato.Although .cat files are usually signable, the internal hash that's generated may not be accurate.

Per risolvere questo problema, assicurarsi che qualsiasi file PE che si tenta di firmare sia inferiore a 4 GB.To work around this issue, make sure that any PE file that you try to sign is less than 4 GB. A causa dei rischi per la compatibilità con le versioni precedenti, attualmente non è possibile né backport né una correzione permanente.Because of backward compatibility risks, neither backports nor a permanent fix are currently possible. Tuttavia, questo problema è in fase di analisi.However, this issue is being investigated.

Nota

Questo problema non è specifico di SignTool.This issue isn't specific to SignTool. La progettazione dell'intestazione PE è limitata a 4 GB per Windows 7 e versioni successive di Windows, indipendentemente dallo strumento usato.The design of the PE header is limited to 4 GB for Windows 7 and later Windows versions, regardless of which tool is used.

Domande frequentiFrequently asked questions (FAQ)

Q1: qual è il limite corrente per le dimensioni del file ufficiale per una firma digitale (e una controfirma del timestamp) in Windows?Q1: What is the current, official file size limit for a digital signature (and time stamp counter-signature) on Windows?

A1: per i file PE, ad esempio. exe e. sys, le dimensioni massime del file per la firma sono pari a 4 GB.A1: For PE files such as .exe and .sys, the maximum file size for signing is 4 GB.

Q2: esiste una particolare versione di Windows, ad esempio Windows Server 2016, che offre la possibilità di firmare file di grandi dimensioni?Q2: Is there a particular version of Windows, such as Windows Server 2016, that has the most capability to sign large files?

A2: No, il problema ha effetto su tutte le versioni di Windows.A2: No, the issue affects all versions of Windows.

Q3: la versione a 64 bit di SignTool offre un supporto migliore per questa funzionalità rispetto alla versione a 32 bit?Q3: Does the 64-bit version of Signtool have better support for this functionality than the 32-bit version does?

R: No, la versione a 64 bit di SignTool usa gli stessi valori della versione a 32 bit.A: No, the 64-bit version of SignTool uses the same values as the 32-bit version. Il problema rimane quindi a 64 bit.Therefore, the issue remains in 64-bit.

Q4: i clienti che usano una versione a 32 bit di Windows potrebbero riscontrare problemi se tentano di usare file firmati con la versione a 64 bit di 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?

R: No.A: No. Tuttavia, le limitazioni rimarranno indipendentemente dalla versione di SignTool usata.However, the limitations would remain regardless of which version of SignTool is used.

Q5: è consigliabile usare uno strumento di firma o un metodo diverso?Q5: Should we be using a different signing tool or method altogether?

R: attualmente non è disponibile un metodo alternativo per la firma digitale.A: We currently have no alternative method for digital signing.