SignTool.exe (Ferramenta de Sinal)

A Ferramenta de Sinalização é uma ferramenta de linha de comandos que assina digitalmente ficheiros, verifica assinaturas em ficheiros e ficheiros de carimbos de data/hora.

Esta ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, utilize a Linha de Comandos do Programador do Visual Studio ou o PowerShell para Programadores do Visual Studio.

Nota

O SDK Windows 10, Windows 10 HLK, Windows 10 WDK e Windows 10 ADK compila 20236 e, posteriormente, requer a especificação do algoritmo de resumo. O comando SignTool sign requer que o algoritmo de resumo do /fd ficheiro e a opção algoritmo de resumo do /td carimbo de data/hora sejam especificados durante a assinatura e o timestamping, respetivamente. Será apresentado um erro (código de erro 1) se /fd não for especificado durante a assinatura e se /td não for especificado durante o timestamping.

Na linha de comandos, escreva o seguinte:

Sintaxe

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

Parâmetros

Argumento Description
command Um dos quatro comandos (catdb, sign, Timestampou Verify) que especifica uma operação a executar num ficheiro. Para obter uma descrição de cada comando, consulte a tabela seguinte.
options Uma opção que modifica um comando. Além do global /q e /v das opções, cada comando suporta um conjunto exclusivo de opções.
file_name O caminho para um ficheiro a assinar.

Os seguintes comandos são suportados pela Ferramenta de Sinal. Cada comando é utilizado com conjuntos distintos de opções, que estão listados nas respetivas secções.

Comando Descrição
catdb Adiciona um ficheiro de catálogo ou remove-o de uma base de dados de catálogo. As bases de dados de catálogo são utilizadas para pesquisa automática de ficheiros de catálogo e são identificadas pelo GUID. Para obter uma lista das opções suportadas pelo catdb comando, consulte Opções de Comando catdb.
sign Assina ficheiros digitalmente. As assinaturas digitais protegem os ficheiros contra adulteração e permitem que os utilizadores verifiquem o signatário com base num certificado de assinatura. Para obter uma lista das opções suportadas pelo sign comando, veja Assinar Opções de Comando.
Timestamp Ficheiros de carimbos de data/hora. Para obter uma lista das opções suportadas pelo TimeStamp comando, veja TimeStamp Command Options (Opções de Comandos do Carimbo de Data/Hora).
Verify Verifica a assinatura digital dos ficheiros ao determinar se o certificado de assinatura foi emitido por uma autoridade fidedigna, 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 seguintes opções aplicam-se a todos os comandos da Ferramenta de Sinal.

Opção global Description
/q Não apresenta nenhuma saída se o comando for executado com êxito e apresentar um resultado mínimo se o comando falhar.
/v Apresenta a saída verbosa independentemente de o comando ser executado com êxito ou falhar e apresentar mensagens de aviso.
/debug Apresenta informações de depuração.

Opções de Comando catdb

A tabela seguinte lista as opções que podem ser utilizadas com o catdb comando .

Opção Catdb Description
/d Especifica que a base de dados de catálogo predefinida é atualizada. Se nem a opção /d nem for utilizada, a Ferramenta de Sinal atualiza o componente do sistema e a /g base de dados do controlador.
/gGUID Especifica que a base de dados de catálogo identificada pelo GUID do identificador exclusivo global é atualizada.
/r Remove os catálogos especificados da base de dados do catálogo. Se esta opção não for especificada, a Ferramenta de Sinal adiciona os catálogos especificados à base de dados do catálogo.
/u Especifica que um nome exclusivo é gerado automaticamente para os ficheiros de catálogo adicionados. Se necessário, o nome dos ficheiros do catálogo é alterado para evitar conflitos de nomes com ficheiros de catálogo existentes. Se esta opção não for especificada, a Ferramenta de Sinal substitui qualquer catálogo existente que tenha o mesmo nome que o catálogo que está a ser adicionado.

assinar Opções de Comando

A tabela seguinte lista as opções que podem ser utilizadas com o sign comando .

Opção de comando Assinar Description
/a Seleciona automaticamente o melhor certificado de assinatura. A Ferramenta de Sinalização irá localizar todos os certificados válidos que satisfaçam todas as condições especificadas e selecionar o que for válido durante mais tempo. Se esta opção não estiver presente, a Ferramenta de Sinal espera encontrar apenas um certificado de assinatura válido.
/acficheiro Adiciona um certificado adicional do ficheiro ao bloco de assinatura.
/as Acrescenta esta assinatura. Se não existir nenhuma assinatura primária, esta assinatura será feita como assinatura primária.
/cCertTemplateName Especifica o Nome do Modelo de Certificado (uma extensão Microsoft) para o certificado de assinatura.
/cspCSPName Especifica o fornecedor de serviços criptográficos (CSP) que contém o contentor de chaves privadas.
/dDesc Especifica uma descrição do conteúdo assinado.
/duURL Especifica um UrL (Uniform Resource Locator) para a descrição expandida do conteúdo assinado.
/fSignCertFile Especifica o certificado de assinatura num ficheiro. Se o ficheiro estiver no formato Personal Information Exchange (PFX) e estiver protegido por uma palavra-passe, utilize a opção /p para especificar a palavra-passe. Se o ficheiro não contiver chaves privadas, utilize as /csp opções e /kc para especificar o CSP e o nome do contentor de chaves privadas.
/fd Especifica o algoritmo de resumo de ficheiros a utilizar para criar assinaturas de ficheiros.
Nota: É gerado um erro se o /fd comutador não for fornecido durante a assinatura.
/fdcertHash Especificar o certHash de cadeia será predefinido para o algoritmo utilizado no certificado de assinatura.
Nota: É gerado um erro se o /fd comutador não for fornecido durante a assinatura.
/iIssuerName Especifica o nome do emissor do certificado de assinatura. Este valor pode ser uma subcadeia de todo o nome do emissor.
/kcPrivKeyContainerName Especifica o nome do contentor de chaves privadas.
/nSubjectName Especifica o nome do requerente do certificado de assinatura. Este valor pode ser uma subcadeia de todo o nome do requerente.
/nph Se for suportado, suprime os hashes de página para ficheiros executáveis. A predefinição é determinada pela variável de ambiente SIGNTOOL_PAGE_HASHES e pela versão wintrust.dll. Esta opção é ignorada para ficheiros não PE.
/pPalavra-passe Especifica a palavra-passe a utilizar ao abrir um ficheiro PFX. (Utilize a opção /f para especificar um ficheiro PFX.)
/p7Caminho Especifica que é produzido um ficheiro PKCS (Public Key Cryptography Standards) #7 para cada ficheiro de conteúdo especificado. Os ficheiros PKCS n.º 7 têm o nomefilename.p7 do caminho\.
/p7ceValor Especifica opções para o conteúdo PKCS n.º 7 assinado. Defina Valor como "Embedded" para incorporar o conteúdo assinado no ficheiro PKCS #7 ou para "DetachedSignedData" para produzir a parte dos dados assinados de um ficheiro PKCS #7 desanexado. Se a opção /p7ce não for utilizada, o conteúdo assinado é incorporado por predefinição.
/p7co<OID> Especifica o identificador de objeto (OID) que identifica o conteúdo PKCS n.º 7 assinado.
/ph Se for suportado, gera hashes de página para ficheiros executáveis.
/rRootSubjectName Especifica o nome do requerente do certificado de raiz ao qual o certificado de assinatura tem de ser encadeado. Este valor pode ser uma subcadeia do nome completo do requerente do certificado de raiz.
/sStoreName Especifica o arquivo a abrir ao procurar o certificado. Se esta opção não for especificada, o My arquivo será aberto.
/sha1Hash Especifica o hash SHA1 do certificado de assinatura. O hash SHA1 é normalmente especificado quando vários certificados satisfazem os critérios especificados pelos restantes comutadores.
/sm Especifica que é utilizado um arquivo de máquinas, em vez de um arquivo de utilizadores.
/tURL Especifica o URL do servidor de carimbo de data/hora. Se esta opção (ou /tr) não estiver presente, o ficheiro assinado não terá o carimbo de data/hora. É gerado um aviso se o carimbo de data/hora falhar. Esta opção não pode ser utilizada com a opção /tr .
/tdalg Utilizado com a opção /tr para pedir um algoritmo de resumo utilizado pelo servidor de carimbo de data/hora RFC 3161.
Nota: É gerado um erro se /td não for fornecido durante o timestamping.
/trURL Especifica o URL do servidor de carimbo de data/hora RFC 3161. Se esta opção (ou /t) não estiver presente, o ficheiro assinado não terá o carimbo de data/hora. É gerado um aviso se o carimbo de data/hora falhar. Esta opção não pode ser utilizada com a opção /t .
/uUtilização Especifica a utilização avançada da chave (EKU) que tem de estar presente no certificado de assinatura. O valor de utilização pode ser especificado por OID ou cadeia. A utilização predefinida é "Assinatura de Código" (1.3.6.1.5.5.7.3.3).
/uw Especifica a utilização da "Verificação do Componente do Sistema Windows" (1.3.6.1.4.1.311.10.3.6).

Para obter exemplos de utilização, veja Utilizar o SignTool para Assinar um Ficheiro.

Opções de Comando de Carimbo de Data/Hora

A tabela seguinte lista as opções que podem ser utilizadas com o TimeStamp comando .

Opção Carimbo de Data/Hora Description
/p7 Carimbos de data/hora ficheiros PKCS n.º 7.
/tURL Especifica o URL do servidor de carimbo de data/hora. O ficheiro com carimbo de data/hora tem de ter sido assinado anteriormente. A opção /t ou /tr é necessária.
/tdalg Utilizado com a opção /tr para pedir um algoritmo de resumo utilizado pelo servidor de carimbo de data/hora RFC 3161.
Nota: É gerado um erro se /td não for fornecido durante o timestamping.
/tpíndice Carimbo de data/hora da assinatura no índice.
/trURL Especifica o URL do servidor de carimbo de data/hora RFC 3161. O ficheiro com carimbo de data/hora tem de ter sido assinado anteriormente. A opção /tr ou /t é necessária.

Para obter um exemplo de utilização, veja Adicionar Carimbos de Data/Hora a Ficheiros Assinados Anteriormente.

Verificar Opções de Comando

Opção Verificar Description
/a Especifica que todos os métodos podem ser utilizados para verificar o ficheiro. Em primeiro lugar, as bases de dados do catálogo são pesquisadas para determinar se o ficheiro tem sessão iniciada num catálogo. Se o ficheiro não tiver sessão iniciada em nenhum catálogo, a Ferramenta de Sinal tenta verificar a assinatura incorporada do ficheiro. Esta opção é recomendada ao verificar ficheiros que podem ou não ter sessão iniciada num catálogo. Exemplos destes ficheiros incluem ficheiros ou controladores do Windows.
/ad Localiza o catálogo com a base de dados de catálogo predefinida.
/agCatDBGUID Localiza o catálogo na base de dados do catálogo identificada pelo CatDBGUID.
/all Verifica todas as assinaturas num ficheiro que inclui múltiplas assinaturas.
/as Localiza o catálogo com a base de dados do catálogo de componentes do sistema (controlador).
/cCatFile Especifica o ficheiro de catálogo por nome.
/d Especifica que a Ferramenta de Sinal deve imprimir a descrição e o URL de descrição.
/dsÍndice Verifica a assinatura numa posição especificada.
/hash (SHA1|SHA256) Especifica um algoritmo hash opcional a utilizar ao procurar um ficheiro num catálogo.
/kp Especifica que a verificação deve ser efetuada com a política de assinatura de controladores no modo kernel.
/ms Utiliza várias semânticas de verificação. Este é o comportamento predefinido de uma chamada WinVerifyTrust no Windows 8 e superior.
/oVersão Verifica o ficheiro por versão do sistema operativo. A versão tem o seguinte formulário: PlatformID:VerMajor. Verminor. BuildNumber. PlatformID representa o valor subjacente de um PlatformID membro de enumeração. Importante: Recomenda-se a utilização do /o comutador. Se /o não for especificado, SignTool.exe poderá devolver resultados inesperados. Por exemplo, se não incluir o comutador, os /o catálogos de sistema que validam corretamente num sistema operativo mais antigo poderão não ser validados corretamente num sistema operativo mais recente.
/p7 Verifica os ficheiros PKCS n.º 7. Não são utilizadas políticas existentes para validação PKCS n.º 7. A assinatura está selecionada e é criada uma cadeia para o certificado de assinatura.
/pa Especifica que a Política de Verificação de Autenticação Predefinida deve ser utilizada. Se a opção /pa não for especificada, a Ferramenta de Sinal utiliza a Política de Verificação de Controladores do Windows. Esta opção não pode ser utilizada 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 utilizada com as catdb opções.
/ph Especifica que a Ferramenta de Sinal deve imprimir e verificar os valores hash da página.
/rRootSubjectName Especifica o nome do requerente do certificado de raiz ao qual o certificado de assinatura tem de ser encadeado. Este valor pode ser uma subcadeia do nome completo do requerente do certificado de raiz.
/tw Especifica que deve ser gerado um aviso se a assinatura não tiver o carimbo de data/hora.

Para obter exemplos de utilização, veja Utilizar o SignTool para Verificar uma Assinatura de Ficheiro.

Devolver Valor

A Ferramenta de Sinal devolve um dos seguintes códigos de saída quando termina.

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

Exemplos

O seguinte comando adiciona o ficheiro de catálogo MyCatalogFileName.cat ao componente do sistema e à base de dados do controlador. A /u opção gera um nome exclusivo, se necessário, para impedir a substituição de um ficheiro de catálogo existente com o nome MyCatalogFileName.cat.

signtool catdb /v /u MyCatalogFileName.cat  

O seguinte comando assina automaticamente um ficheiro com o melhor certificado.

signtool sign /a /fd SHA256 MyFile.exe

O seguinte comando assina digitalmente um ficheiro com um certificado armazenado num ficheiro PFX protegido por palavra-passe.

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

O seguinte comando assina digitalmente e carimbos de data/hora de um ficheiro. O certificado utilizado para assinar o ficheiro é armazenado num ficheiro PFX.

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

O seguinte comando assina um ficheiro com um certificado localizado no My arquivo que tem um nome de assunto de My Company Certificate.

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

O comando seguinte assina um controlo ActiveX e fornece informações apresentadas no browser quando é pedido ao utilizador para instalar o controlo.

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

O seguinte comando carimbou um ficheiro que já foi assinado digitalmente.

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

O seguinte comando carimbou um ficheiro com um servidor de carimbo de data/hora RFC 3161.

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

O comando seguinte verifica se foi assinado um ficheiro.

signtool verify MyFile.exe  

O comando seguinte verifica um ficheiro de sistema que pode ter sessão iniciada num catálogo.

signtool verify /a SystemFile.dll  

O comando seguinte verifica um ficheiro de sistema com sessão iniciada num catálogo com o nome MyCatalog.cat.

signtool verify /c MyCatalog.cat SystemFile.dll  

Ver também