Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I tipi di errori più comuni quando si usa SignTool sono interni e in genere hanno un aspetto simile al seguente:
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. Se viene visualizzato questo tipo di errore, è necessario ricompilare il pacchetto ed eseguire di nuovo SignTool .
SignTool ha un'opzione di debug disponibile per visualizzare gli errori del certificato e il filtro. Per usare la funzionalità di debug, posizionare l'opzione /debug
direttamente dopo sign
, seguita dal comando SignTool completo.
SignTool sign /debug [options]
Un errore più comune è 0x8007000B. Per questo tipo di errore, è possibile trovare altre informazioni nel registro eventi.
Per altre informazioni nel registro eventi:
- Eseguire Eventvwr.msc
- Aprire il registro eventi: Visualizzatore eventi (locale) -> Registri applicazioni e servizi -> Microsoft -> Windows -> AppxPackagingOM -> Microsoft-Windows-AppxPackaging/Operational
- Trovare l'evento di errore più recente
L'errore interno 0x8007000B in genere corrisponde a uno di questi valori:
ID evento | Stringa di evento di esempio | Suggerimento |
---|---|---|
150 | errore 0x8007000B: il nome dell'autore del manifesto dell'app (CN=Contoso) deve corrispondere al nome soggetto del certificato di firma (CN=Contoso, C=US). | Il nome dell'autore del manifesto dell'app deve corrispondere esattamente al nome del soggetto della firma. |
151 | errore 0x8007000B: il metodo hash della firma specificato (SHA512) deve corrispondere al metodo hash usato nella mappa a blocchi del pacchetto dell'app (SHA256). | HashAlgorithm specificato nel parametro /fd non è corretto. Eseguire di nuovo SignTool usando hashAlgorithm che corrisponde alla mappa a blocchi del pacchetto dell'app (usata per creare il pacchetto dell'app) |
152 | errore 0x8007000B: il contenuto del pacchetto dell'app deve essere convalidato rispetto alla mappa a blocchi. | Il pacchetto dell'app è danneggiato e deve essere ricompilato per generare una nuova mappa a blocchi. Per altre informazioni sulla creazione di un pacchetto di app, vedi Creare un pacchetto di app con lo strumento di MakeAppx.exe |
Un altro errore comune è 0x80080057. Quando si tenta di firmare un file PE (Portable Executable), è possibile che si verifichino i problemi seguenti usando lo strumento SignTool in Windows:
Non è possibile firmare un file PE di 4 gigabyte (GB) o superiore. Quando si tenta di firmare, viene visualizzato un messaggio di errore "parametro non valido (0x80080057)".
Per i file di dimensioni superiori a 4 GB, l'hash generato potrebbe non essere accurato anche se SignTool potrebbe altrimenti firmare correttamente il file.
Annotazioni
Questo è particolarmente vero per i file con estensione cat.
Questo problema si verifica per i file PE, ad esempio .exe, .syse così via. Questo problema si verifica a causa di una variabile ULONG nell'intestazione PE che specifica le dimensioni dell'immagine. Le dimensioni dell'immagine sono di 2 GB per i sistemi operativi di livello inferiore, ad esempio Vista e versioni precedenti. Si tratta di una limitazione di progettazione dal 1996. Il limite massimo per questo valore è 4 GB per i file PE, ad esempio .exe e .sys. Anche se i file .cat sono in genere firmabili, l'hash interno generato potrebbe non essere accurato.
Per risolvere questo problema, assicurarsi che qualsiasi file PE che si tenta di firmare sia inferiore a 4 GB. A causa dei rischi di compatibilità con le versioni precedenti, non sono attualmente possibili backport né correzioni permanenti. Tuttavia, questo problema viene analizzato.
Annotazioni
Questo problema non è specifico di SignTool. La progettazione dell'intestazione PE è limitata a 4 GB per Windows 7 e versioni successive di Windows, indipendentemente dallo strumento usato.
Domande frequenti
D1: Qual è il limite ufficiale di dimensione del file corrente per una firma digitale (e una controfirma con marca temporale) in Windows?
A1: per i file PE, ad esempio .exe e .sys, la dimensione massima del file per la firma è di 4 GB.
D2: Esiste una versione specifica di Windows, ad esempio Windows Server 2016, che ha la massima capacità di firmare file di grandi dimensioni?
A2: No, il problema interessa tutte le versioni di Windows.
D3: La versione a 64 bit di Signtool offre un supporto migliore per questa funzionalità rispetto alla versione a 32 bit?
R: No, la versione a 64 bit di SignTool usa gli stessi valori della versione a 32 bit. Pertanto, il problema rimane a 64 bit.
D4: I clienti che usano una versione a 32 bit di Windows potrebbero riscontrare problemi se tentano di usare file firmati usando la versione a 64 bit di SignTool?
R: No. Tuttavia, le limitazioni rimarranno indipendentemente dalla versione di SignTool usata.
D5: Dovremmo usare completamente uno strumento o un metodo di firma diverso?
R: Attualmente non è disponibile alcun metodo alternativo per la firma digitale.