Partilhar via


SignTool.exe (Ferramenta de Sinalização)

A Ferramenta de Assinatura é uma ferramenta de linha de comando que assina digitalmente arquivos, verifica assinaturas em arquivos e carimba data/hora em arquivos.

Esta ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, use o Visual Studio Developer Command Prompt ou o Visual Studio Developer PowerShell.

Nota

O SDK do Windows 10, o Windows 10 HLK, o WDK do Windows 10 e o Windows 10 ADK compilam 20236 e posteriores exigem a especificação do algoritmo digest. O comando SignTool sign requer que o algoritmo de resumo de /fd arquivo e a opção de algoritmo de resumo de carimbo /td de data/hora sejam especificados durante a assinatura e o carimbo de data/hora, respectivamente. Um erro (código de erro 1) será lançado se /fd não for especificado durante a assinatura e se /td não for especificado durante o carimbo de data/hora.

Na linha de comandos, escreva o seguinte:

Sintaxe

signtool [command] [options] [file_name | ...]  

Parâmetros

Argumento Description
command Um dos quatro comandos (catdb, sign, Timestamp, ou Verify) que especifica uma operação a ser executada em um arquivo. Para obter uma descrição de cada comando, consulte a tabela a seguir.
options Uma opção que modifica um comando. Além do global /q e /v opções, cada comando suporta um conjunto exclusivo de opções.
file_name O caminho para um arquivo a ser assinado.

Os comandos a seguir são suportados pela Ferramenta de Assinatura. Cada comando é usado com conjuntos distintos de opções, que são listadas em suas respetivas seções.

Comando Description
catdb Adiciona um arquivo de catálogo ou o remove de um banco de dados de catálogo. Os bancos de dados de catálogo são usados para pesquisa automática de arquivos de catálogo e são identificados pelo GUID. Para obter uma lista das opções suportadas pelo catdb comando, consulte Opções de comando catdb.
sign Assina arquivos digitalmente. As assinaturas digitais protegem os arquivos contra adulteração e permitem que os usuários verifiquem o signatário com base em um certificado de assinatura. Para obter uma lista das opções suportadas pelo sign comando, consulte assinar Opções de comando.
Timestamp Arquivos de carimbos de data/hora. Para obter uma lista das opções suportadas pelo TimeStamp comando, consulte Opções de comando TimeStamp.
Verify Verifica a assinatura digital de arquivos determinando se o certificado de assinatura foi emitido por uma autoridade confiável, se o certificado de assinatura foi revogado e, opcionalmente, se o certificado de assinatura é válido para uma política específica. Para obter uma lista das opções suportadas pelo Verify comando, consulte Verificar opções de comando.

As opções a seguir se aplicam a todos os comandos da Ferramenta de Assinatura.

Opção global Description
/q Não exibe nenhuma saída se o comando for executado com êxito e exibe saída mínima se o comando falhar.
/v Exibe a saída detalhada, independentemente de o comando ser executado com êxito ou falhar, e exibe mensagens de aviso.
/depurar Exibe informações de depuração.

Opções de comando catdb

A tabela a seguir lista as opções que podem ser usadas com o catdb comando.

Opção Catdb Description
/d Especifica que o banco de dados de catálogo padrão é atualizado. Se nem a /d opção nem a /g opção forem usadas, a Ferramenta de Assinatura atualizará o componente do sistema e o banco de dados de drivers.
/gGUID Especifica que o banco de dados de catálogo identificado pelo GUID do identificador global exclusivo é atualizado.
/r Remove os catálogos especificados do banco de dados de catálogo. Se essa opção não for especificada, a Ferramenta de Assinatura adicionará os catálogos especificados ao banco de dados de catálogo.
/u Especifica que um nome exclusivo é gerado automaticamente para os arquivos de catálogo adicionados. Se necessário, os arquivos de catálogo são renomeados para evitar conflitos de nome com arquivos de catálogo existentes. Se essa opção não for especificada, a Ferramenta de Assinatura substituirá qualquer catálogo existente que tenha o mesmo nome do catálogo que está sendo adicionado.

assinar Opções de Comando

A tabela a seguir lista as opções que podem ser usadas com o sign comando.

Opção de comando Assinar Description
/a Seleciona automaticamente o melhor certificado de assinatura. A Ferramenta de Assinatura encontrará todos os certificados válidos que satisfaçam todas as condições especificadas e selecionará o que for válido por mais tempo. Se essa opção não estiver presente, a Ferramenta de Assinatura espera encontrar apenas um certificado de assinatura válido.
/ac arquivo Adiciona um certificado adicional do arquivo ao bloco de assinatura.
/as Anexa esta assinatura. Se nenhuma assinatura principal estiver presente, essa assinatura será transformada na assinatura principal.
/c CertTemplateName Especifica o Nome do Modelo de Certificado (uma extensão da Microsoft) para o certificado de assinatura.
/csp CSPName Especifica o provedor de serviços de criptografia (CSP) que contém o contêiner de chave privada.
/d Desc Especifica uma descrição do conteúdo assinado.
/du URL Especifica um URL (Uniform Resource Locator) para a descrição expandida do conteúdo assinado.
/f SignCertFile Especifica o certificado de assinatura em um arquivo. Se o arquivo estiver no formato PFX (Troca de Informações Pessoais) e protegido por uma senha, use a /p opção para especificar a senha. Se o arquivo não contiver chaves privadas, use as /csp opções e /kc para especificar o CSP e o nome do contêiner de chave privada.
/fd Especifica o algoritmo de resumo de arquivo a ser usado para criar assinaturas de arquivo.
Observação: Um erro será gerado se o switch não for fornecido durante a /fd assinatura.
/fd certHash Especificar a cadeia de caracteres certHash será padrão para o algoritmo usado no certificado de assinatura.
Observação: Um erro será gerado se o switch não for fornecido durante a /fd assinatura.
/i Nome do Emissor Especifica o nome do emissor do certificado de assinatura. Esse valor pode ser uma substring de todo o nome do emissor.
/kc PrivKeyContainerName Especifica o nome do contêiner de chave privada.
/n SubjectName Especifica o nome do assunto do certificado de assinatura. Esse valor pode ser uma substring do nome do assunto inteiro.
/nph Se suportado, suprime hashes de página para arquivos executáveis. O padrão é determinado pela variável de ambiente SIGNTOOL_PAGE_HASHES e pela versão wintrust.dll. Esta opção é ignorada para ficheiros não PE.
/p Palavra-passe Especifica a senha a ser usada ao abrir um arquivo PFX. (Use a /f opção para especificar um arquivo PFX.)
/p7Caminho Especifica que um arquivo PKCS (Public Key Cryptography Standards) #7 é produzido para cada arquivo de conteúdo especificado. Os arquivos PKCS #7 são nomeados path\filename.p7.
/p7ceValor Especifica opções para o conteúdo PKCS #7 assinado. Defina Value como "Embedded" para incorporar o conteúdo assinado no arquivo PKCS #7 ou como "DetachedSignedData" para produzir a parte de dados assinados de um arquivo PKCS #7 desanexado. Se a /p7ce opção não for usada, o conteúdo assinado será incorporado por padrão.
/p7co<OIDE> Especifica o identificador de objeto (OID) que identifica o conteúdo PKCS #7 assinado.
/ph Se suportado, gera hashes de página para arquivos executáveis.
/r RootSubjectName Especifica o nome do assunto do certificado raiz ao qual o certificado de assinatura deve ser encadeado. Esse valor pode ser uma substring do nome do assunto inteiro do certificado raiz.
/s Nome da Loja Especifica o repositório a ser aberto ao procurar o certificado. Se esta opção não for especificada, a My loja será aberta.
/sha1 Hash Especifica o hash SHA1 do certificado de assinatura. O hash SHA1 é normalmente especificado quando vários certificados satisfazem os critérios especificados pelas opções restantes.
/sm Especifica que um armazenamento de máquina, em vez de um repositório de usuário, é usado.
/t URL Especifica a URL do servidor de carimbo de data/hora. Se essa opção (ou /tr) não estiver presente, o arquivo assinado não terá carimbo de data/hora. Um aviso é gerado se o carimbo de data/hora falhar. Esta opção não pode ser usada com a /tr opção.
/td ALG Usado com a /tr opção de solicitar um algoritmo de resumo usado pelo servidor de carimbo de data/hora RFC 3161.
Observação: Um erro é gerado se /td não for fornecido durante o carimbo de data/hora.
/tr URL Especifica a URL do servidor de carimbo de data/hora RFC 3161. Se essa opção (ou /t) não estiver presente, o arquivo assinado não terá carimbo de data/hora. Um aviso é gerado se o carimbo de data/hora falhar. Esta opção não pode ser usada com a /t opção.
/u Utilização Especifica o uso avançado de chave (EKU) que deve estar presente no certificado de assinatura. O valor de uso pode ser especificado por OID ou string. O uso padrão é "Assinatura de código" (1.3.6.1.5.5.7.3.3).
/uw Especifica o uso de "Verificação de componentes do sistema Windows" (1.3.6.1.4.1.311.10.3.6).

Para obter exemplos de uso, consulte Usando o SignTool para assinar um arquivo.

Opções de comando TimeStamp

A tabela a seguir lista as opções que podem ser usadas com o TimeStamp comando.

Opção TimeStamp Description
/p7 Carimbos de data/hora arquivos PKCS #7.
/t URL Especifica a URL do servidor de carimbo de data/hora. O arquivo que está sendo carimbo de data/hora deve ter sido assinado previamente. Ou a /t opção ou é /tr necessária.
/td ALG Usado com a /tr opção de solicitar um algoritmo de resumo usado pelo servidor de carimbo de data/hora RFC 3161.
Observação: Um erro é gerado se /td não for fornecido durante o carimbo de data/hora.
/tpíndice Carimba a hora da assinatura no índice.
/tr URL Especifica a URL do servidor de carimbo de data/hora RFC 3161. O arquivo que está sendo carimbo de data/hora deve ter sido assinado previamente. Ou a /tr opção ou é /t necessária.

Para obter um exemplo de uso, consulte Adicionando carimbos de data/hora a arquivos assinados anteriormente.

Verificar opções de comando

Opção Verificar Description
/a Especifica que todos os métodos podem ser usados para verificar o arquivo. Primeiro, os bancos de dados de catálogo são pesquisados para determinar se o arquivo está assinado em um catálogo. Se o arquivo não estiver assinado em nenhum catálogo, a Ferramenta de Assinatura tentará verificar a assinatura incorporada do arquivo. Essa opção é recomendada ao verificar arquivos que podem ou não ser assinados em um catálogo. Exemplos desses arquivos incluem arquivos ou drivers do Windows.
/ad Localiza o catálogo usando o banco de dados de catálogo padrão.
/agCatDBGUID Localiza o catálogo no banco de dados de catálogo identificado pelo CatDBGUID.
/all Verifica todas as assinaturas em um arquivo que inclui várias assinaturas.
/as Localiza o catálogo usando o banco de dados de catálogo do componente do sistema (driver).
/cArquivo Gato Especifica o arquivo de catálogo por nome.
/d Especifica que a Ferramenta de Assinatura deve imprimir a descrição e a URL de descrição.
/ds Índice Verifica a assinatura em uma posição especificada.
/hash (SHA1|SHA256) Especifica um algoritmo de hash opcional a ser usado ao procurar um arquivo em um catálogo.
/kp Especifica que a verificação deve ser executada com a política de assinatura de driver de modo kernel.
/ms Usa várias semânticas de verificação. Este é o comportamento padrão de uma chamada WinVerifyTrust no Windows 8 e superior.
/oVersão Verifica o arquivo por versão do sistema operacional. A versão tem o seguinte formato: PlatformID:VerMajor.VerMinor.BuildNumber. PlatformID representa o valor subjacente de um PlatformID membro de enumeração. Importante: Recomenda-se a utilização do interruptor./o Se /o não for especificado, SignTool.exe pode retornar resultados inesperados. Por exemplo, se você não incluir o /o switch, os catálogos de sistema que validam corretamente em um sistema operacional mais antigo podem não validar corretamente em um sistema operacional mais recente.
/p7 Verifica os arquivos PKCS #7. Nenhuma política existente é usada para validação PKCS #7. A assinatura é verificada e uma cadeia é criada para o certificado de assinatura.
/pa Especifica que a Política de Verificação de Authenticode Padrão deve ser usada. Se a opção não for especificada, a /pa Ferramenta de Assinatura usará a Política de Verificação de Driver do Windows. Esta opção não pode ser usada com as catdb opções.
/pgPolicyGUID Especifica uma política de verificação por GUID. O PolicyGUID corresponde ao ActionID da política de verificação. Esta opção não pode ser usada com as catdb opções.
/ph Especifica que a Ferramenta de Assinatura deve imprimir e verificar os valores de hash de página.
/rRootSubjectName Especifica o nome do assunto do certificado raiz ao qual o certificado de assinatura deve ser encadeado. Esse valor pode ser uma substring de todo o nome do assunto do certificado raiz.
/tw Especifica que um aviso deve ser gerado se a assinatura não tiver carimbo de data/hora.

Para obter exemplos de uso, consulte Usando o SignTool para verificar uma assinatura de arquivo.

Devolver Valor

A Ferramenta de Assinatura retorna um dos seguintes códigos de saída quando é encerrada.

Código de saída Description
0 A execução foi bem sucedida.
1 A execução falhou.
2 A execução foi concluída com avisos.

Exemplos

O comando a seguir adiciona o arquivo de catálogo MyCatalogFileName.cat ao componente do sistema e ao banco de dados de driver. A /u opção gera um nome exclusivo, se necessário, para evitar a substituição de um arquivo de catálogo existente chamado MyCatalogFileName.cat.

signtool catdb /v /u MyCatalogFileName.cat  

O comando a seguir assina um arquivo automaticamente usando o melhor certificado.

signtool sign /a /fd SHA256 MyFile.exe

O comando a seguir assina digitalmente um arquivo usando um certificado armazenado em um arquivo PFX protegido por senha.

signtool sign /f MyCert.pfx /p MyPassword /fd SHA256 MyFile.exe

O comando a seguir assina digitalmente e carimba a hora de um arquivo. O certificado usado para assinar o arquivo é armazenado em um arquivo PFX.

signtool sign /f MyCert.pfx /t http://timestamp.digicert.com /fd SHA256 MyFile.exe

O comando a seguir assina um arquivo usando um certificado localizado no My repositório que tem um nome de assunto de My Company Certificate.

signtool sign /n "My Company Certificate" /fd SHA256 MyFile.exe

O comando a seguir assina um controle ActiveX e fornece informações que são exibidas no navegador quando o usuário é solicitado a instalar o controle.

Signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html /fd SHA256 MyControl.exe

O comando a seguir carimba a hora de um arquivo que já foi assinado digitalmente.

signtool timestamp /t http://timestamp.digicert.com MyFile.exe

O comando a seguir carimba a hora de um arquivo usando um servidor de carimbo de data/hora RFC 3161.

signtool timestamp /tr http://timestamp.digicert.com /td SHA256 MyFile.exe

O comando a seguir verifica se um arquivo foi assinado.

signtool verify MyFile.exe  

O comando a seguir verifica um arquivo de sistema que pode ser assinado em um catálogo.

signtool verify /a SystemFile.dll  

O comando a seguir verifica um arquivo de sistema que está assinado em um catálogo chamado MyCatalog.cat.

signtool verify /c MyCatalog.cat SystemFile.dll  

Consulte também