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. |
/g GUID |
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.) |
/p7 Caminho |
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. |
/p7ce Valor |
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. |
/ag CatDBGUID |
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). |
/c Arquivo 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. |
/o Versã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. |
/pg PolicyGUID |
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. |
/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 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