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 , Timestamp ou 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. |
/g GUID |
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. |
/ac ficheiro |
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. |
/c CertTemplateName |
Especifica o Nome do Modelo de Certificado (uma extensão Microsoft) para o certificado de assinatura. |
/csp CSPName |
Especifica o fornecedor de serviços criptográficos (CSP) que contém o contentor de chaves privadas. |
/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 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. |
/fd certHash |
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. |
/i IssuerName |
Especifica o nome do emissor do certificado de assinatura. Este valor pode ser uma subcadeia de todo o nome do emissor. |
/kc PrivKeyContainerName |
Especifica o nome do contentor de chaves privadas. |
/n SubjectName |
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. |
/p Palavra-passe |
Especifica a palavra-passe a utilizar ao abrir um ficheiro PFX. (Utilize a opção /f para especificar um ficheiro PFX.) |
/p7 Caminho |
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\. |
/p7ce Valor |
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. |
/r RootSubjectName |
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. |
/s StoreName |
Especifica o arquivo a abrir ao procurar o certificado. Se esta opção não for especificada, o My arquivo será aberto. |
/sha1 Hash |
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. |
/t URL |
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 . |
/td alg |
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. |
/tr URL |
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 . |
/u Utilizaçã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. |
/t URL |
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. |
/td alg |
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. |
/tr URL |
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. |
/ag CatDBGUID |
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). |
/c CatFile |
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. |
/o Versã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. |
/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 utilizada com as catdb opções. |
/ph |
Especifica que a Ferramenta de Sinal deve imprimir e verificar os valores hash da página. |
/r RootSubjectName |
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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários