Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os tipos mais comuns de erros ao usar o SignTool são internos e normalmente se parecem com isto:
SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024885 / 0x8007000B)
Se o código de erro começar com 0x8008, como 0x80080206 (APPX_E_CORRUPT_CONTENT), o pacote que está sendo assinado é inválido. Se você receber esse tipo de erro, você deve reconstruir o pacote e executar o SignTool novamente.
SignTool tem uma opção de depuração disponível para mostrar erros de certificado e filtragem. Para usar o recurso de depuração, coloque a /debug opção logo após sign, seguida pelo comando SignTool completo.
SignTool sign /debug [options]
Um erro mais comum é 0x8007000B. Para esse tipo de erro, você pode encontrar mais informações no log de eventos.
Para encontrar mais informações no registo de eventos:
- Executar Eventvwr.msc
- Abrir o registo de eventos: Visualizador de Eventos (Local) -> Registos de Aplicações e Serviços -> Microsoft -> Windows -> AppxPackagingOM -> Microsoft-Windows-AppxPackaging/Operacional
- Localizar o evento de erro mais recente
O 0x8007000B de erro interno geralmente corresponde a um destes valores:
| ID do Evento | Exemplo de cadeia de caracteres de evento | Sugestão |
|---|---|---|
| 150 | Erro 0x8007000B: O nome do editor do manifesto da app (CN=Contoso) deve corresponder ao nome do sujeito do certificado de assinatura (CN=Contoso, C=US). | O nome do editor do manifesto da aplicação deve corresponder exatamente ao nome do sujeito da assinatura. |
| 151 | erro 0x8007000B: O método de hash de assinatura especificado (SHA512) deve corresponder ao método de hash usado no mapa de blocos do pacote do aplicativo (SHA256). | O hashAlgorithm especificado no parâmetro /fd está incorreto. Execute novamente o SignTool usando hashAlgorithm que corresponde ao mapa de blocos do pacote do aplicativo (usado para criar o pacote do aplicativo) |
| 152 | erro 0x8007000B: O conteúdo do pacote do aplicativo deve ser validado em relação ao seu mapa de bloqueio. | O pacote do aplicativo está corrompido e precisa ser reconstruído para gerar um novo mapa de blocos. Para saber mais sobre como criar um pacote de aplicativo, consulte Criar um pacote de aplicativo com a ferramenta MakeAppx.exe |
Outro erro comum é 0x80080057. Pode experienciar os seguintes problemas ao tentar assinar um ficheiro Executável Portátil (PE) usando a ferramenta SignTool no Windows:
Falha ao assinar um ficheiro PE de 4 gigabytes (GB) ou superior. Quando tenta assinar, recebe uma mensagem de erro "parâmetro inválido (0x80080057)".
Para arquivos maiores que 4 GB, o hash gerado pode não ser preciso, mesmo que o SignTool possa assinar o arquivo com êxito.
Observação
Isso é especialmente verdadeiro para arquivos .cat.
Esse problema ocorre para arquivos PE, como .exe, .syse assim por diante. Esse problema ocorre devido a uma variável ULONG no cabeçalho PE que especifica o tamanho da imagem. (O tamanho da imagem é de 2 GB para sistemas operacionais de nível inferior, como o Vista e versões anteriores.) Esta é uma limitação de design desde 1996. O limite máximo para esse valor é de 4 GB para arquivos PE, como .exe e .sys. Embora os ficheiros .cat geralmente possam ser assináveis, o hash interno gerado pode não ser preciso.
Para contornar esse problema, certifique-se de que qualquer arquivo PE que você tenta assinar é inferior a 4 GB. Esta é uma limitação conhecida do design do formato PE, sem solução planeada, devido a restrições de compatibilidade retroativa.
Observação
Esse problema não é específico do SignTool. O design do cabeçalho PE está limitado a 4 GB para versões Windows 7 e posteriores do Windows, independentemente da ferramenta utilizada.
Perguntas frequentes (FAQ)
P1: Qual é o limite atual e oficial de tamanho de ficheiro para uma assinatura digital (e contraassinatura de carimbo temporal) no Windows?
R1: Para ficheiros PE como .exe e .sys, o tamanho máximo do ficheiro para assinatura é de 4 GB.
P2: Existe alguma versão específica do Windows, como o Windows Server 2016, que tenha mais capacidade para assinar ficheiros grandes?
R2: Não, o problema afeta todas as versões do Windows.
P3: A versão de 64 bits do Signtool tem melhor suporte para esta funcionalidade do que a versão de 32 bits?
R: Não, a versão de 64 bits do SignTool usa os mesmos valores que a versão de 32 bits. Portanto, o problema permanece em 64 bits.
P4: Os clientes que usam uma versão de 32 bits do Windows podem ter problemas se tentarem usar ficheiros assinados pela versão de 64 bits do SignTool?
R: Não. No entanto, as limitações permaneceriam independentemente de qual versão do SignTool é usada.
P5: Devemos usar uma ferramenta ou método de assinatura completamente diferente?
R: Sim. Assinatura Confiável do Azure é o serviço gerido de assinatura de código da Microsoft e é a alternativa moderna recomendada à gestão dos seus próprios certificados. Trata da gestão do ciclo de vida dos certificados e integra-se com fluxos de trabalho CI/CD. Azure Key Vault é outra opção para assinar com certificados armazenados na cloud. Para cenários offline ou de autoatendimento, o SignTool continua a ser a ferramenta padrão.