SignTool
SignTool (Signtool.exe) é uma ferramenta CryptoAPI de linha de comando que assina digitalmente arquivos, verifica assinaturas em arquivos e arquivos de carimbo de data/hora.
SignTool [Operation] [Options] [FileName ...]
Lista parcial de operações, opções e argumentos
Operações
catdb
Configura o SignTool para atualizar um banco de dados de catálogo. O SignTool adiciona arquivos de catálogo a um banco de dados ou remove catálogos de um banco de dados. Por padrão, o comando catdb adiciona os arquivos, cujos nomes são especificados pelo argumento FileName , ao banco de dados do componente do sistema (driver).
Observação
Os bancos de dados de catálogo são usados para pesquisa automática de arquivos de catálogo.
sign
Configura o SignTool para assinar digitalmente os arquivos cujos nomes são especificados pelo argumento FileName .
timestamp
Configura o SignTool para carimbar a data e hora dos arquivos cujos nomes são especificados pelo argumento FileName .
verify
Configura o SignTool para verificar a assinatura digital dos arquivos cujos nomes são especificados pelo argumento FileName .
Opções de operação do Catdb
/d
Configura o SignTool para atualizar o banco de dados do catálogo. Se a opção /d nem /g for usada, o SignTool atualizará o componente do sistema e o banco de dados do driver.
/g Guid
Configura o SignTool para atualizar o banco de dados de catálogo identificado pelo argumento GUID .
/r
Configura o SignTool para remover cada um dos arquivos de catálogo, cujos nomes são especificados pelo argumento FileName , do banco de dados de catálogo. Se essa opção não for especificada, o SignTool adicionará os arquivos de catálogo especificados ao banco de dados de catálogo.
/u
Configura o SignTool para gerar um nome exclusivo, se necessário, para um arquivo de catálogo para evitar um conflito com um arquivo de catálogo existente no banco de dados de catálogo. Se essa opção não for especificada, o SignTool substituirá qualquer catálogo existente que tenha o mesmo nome do catálogo que está sendo adicionado.
Opções de operação de assinatura
/a Configura o SignTool para selecionar automaticamente o melhor certificado de autenticação. Se essa opção não estiver presente, o SignTool espera encontrar apenas um certificado de autenticação.
/ac Nome_do_arquivo_Certificado_Cruzado
Especifica o nome de um arquivo entre certificados que é usado com um SPC (Certificado do Editor de Software) chamado CertificateName e instalado no repositório de certificados StoreName. Essa opção só deve ser usada se o certificado de autenticação for um SPC.
/c Nome_do_Certificado_da_Propriedade
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.
URL /du
Especifica uma URL para a descrição expandida do conteúdo assinado.
/f ArquivoSinal_de_Sinal
Especifica o certificado de assinatura em um arquivo. Somente o formato de arquivo PFX (Personal Information Exchange) é suportado. Você pode usar a ferramenta Pvk2Pfx para converter arquivos SPC e PVK para o formato PFX.
Se o arquivo estiver no formato PFX protegido por uma senha, use a opção /p para especificar a senha. Se o arquivo não contiver chaves privadas, use as opções /csp e /k para especificar o nome do contêiner de chave privada e do CSP, respectivamente.
/Fd
Especifica o algoritmo de resumo do arquivo a ser usado na criação de assinaturas de arquivo. O padrão é SHA1.
/i NomeDoemissor
Especifica o nome do emissor de certificado de assinatura. Esse valor pode ser uma subcadeia de caracteres do nome do emissor inteiro.
/j DLL
Especifica o nome de uma DLL que fornece atributos da assinatura.
/jp Nome_do_Parâmetro
Especifica um parâmetro que é passado para a DLL especificada pelo comando /j .
/kc PrivKeyContainerName
Especifica o nome do contêiner de chave da chave privada.
/n Nome do Assunto
Especifica o nome do assunto do certificado de assinatura. Esse valor pode ser uma subcadeia de caracteres do nome da entidade inteiro.
/nph
Se compatível, 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 de wintrust.dll. Essa opção é ignorada para arquivos não PE.
/p Senha
Especifica a senha a ser usada durante a abertura de um arquivo PFX. Um arquivo PFX pode ser especificado usando a opção /f
/p7 Caminho
Especifica se um arquivo PKCS (Public Key Cryptography Standards) #7 é produzido para cada arquivo de conteúdo especificado. Os arquivos PKCS #7 têm o nome path\filename.p7.
/p7ce Valor
Especifica opções para o conteúdo de PKCS #7 assinado. Defina Value como “Embedded” para inserir o conteúdo assinado no arquivo PKCS #7 ou como “DetachedSignedData” para produzir a parte de dados assinada de um arquivo PKCS #7 desanexado. Se a opção /p7ce não for usada, o conteúdo assinado será inserido por padrão.
/p7co OID
Especifica o OID (identificador de objeto) que identifica o conteúdo assinado de PKCS #7.
/ph Se houver suporte, gera hashes de página para arquivos executáveis.
/r Nome_do_Assunto_raiz
Especifica o nome da entidade do certificado raiz ao qual o certificado de autenticação deve ser encadeado. Esse valor pode ser uma subcadeia de caracteres do nome da entidade inteiro do certificado raiz.
/s Nome_da_loja
Especifica o nome do repositório de certificados a ser aberto ao pesquisar o certificado a ser usado para assinar arquivos. Se essa opção não for especificada, o repositório Meu certificado será aberto.
/sha1 Hash
Especifica o hash SHA1 do certificado de assinatura.
/Sm
Configura o SignTool para usar um repositório de certificados de computador em vez de um repositório de certificados de usuário.
/t URL
Especifica uma URL para um servidor de carimbo de data/hora. Se essa opção não for fornecida, o arquivo assinado não terá carimbo de data/hora. Um arquivo de catálogo ou arquivo de driver deve ter carimbo de data/hora, pois se a chave do signatário estiver comprometida, o carimbo de data/hora fornecerá as informações necessárias para revogar a chave que foi usada para assinar o arquivo.
/td alg
Usado com a opção /tr para solicitar um algoritmo de resumo usado pelo servidor de carimbo de data/hora RFC 3161.
URL /tr
Especifica a URL do servidor do 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 será gerado se o carimbo de data/hora falhar. Essa opção não pode ser usada com a opção /t .
/u Uso
Especifica o EKU (uso avançado de chave) que deve estar presente no certificado de assinatura. O valor de uso pode ser especificado por OID ou por cadeia de caracteres. 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 do Windows" (1.3.6.1.4.1.311.10.3.6).
Opções de operação de carimbo de data/hora
/p7 Carimbos de data/hora PKCS #7 arquivos.
/t URL
Especifica a URL do servidor de carimbo de data/hora. O arquivo que está sendo carimbado com data e hora deve ter sido assinado anteriormente
/td alg
Solicita um algoritmo de resumo usado pelo servidor do carimbo de data/hora RFC 3161. /td é usado com a opção /tr .
/índice tp
Marca com o carimbo de data/hora a assinatura em index.
/tr alg
Solicita um algoritmo de resumo usado pelo servidor do carimbo de data/hora RFC 3161. /td é usado com a opção /tr .
Verificar as opções de operação
/a
Especifica que todos os métodos podem ser usados na verificação do arquivo. Primeiro, os bancos de dados do 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, o SignTool tentará verificar a assinatura incorporada do arquivo. Essa opção é recomendada durante a verificação de arquivos que podem estar ou não assinados em um catálogo.
/anúncio
Especifica que somente o banco de dados de catálogo padrão é pesquisado para o catálogo no qual o arquivo foi conectado.
/all
Verifica todas as assinaturas em um arquivo que inclui várias assinaturas.
/como
Especifica que somente o banco de dados de catálogo do componente do sistema (driver) é pesquisado para o catálogo no qual o arquivo foi conectado.
/ag CatDBGUID
Especifica que somente o banco de dados de catálogo, identificado por meio do argumento CatDBGUID , é pesquisado para o catálogo no qual o arquivo foi conectado.
/c Nome_do_arquivo_catalogado
Especifica o nome de um arquivo de catálogo.
/d Especifica que a ferramenta Sign deve imprimir a descrição e a URL de descrição.
/índice ds
Verifica a assinatura em uma posição especificada.
/hash {SHA1|SHA256}
Especifica um algoritmo de hash opcional a ser usado durante a procura de um arquivo em um catálogo.
/Kp
Configura o SignTool para verificar se a assinatura digital de cada um dos arquivos especificados pelo argumento FileName está em conformidade com a política de assinatura de código do modo kernel e os requisitos de assinatura de instalação do dispositivo PnP do Windows Vista e versões posteriores do Windows. Se essa opção não for especificada, o SignTool verificará apenas se uma assinatura está em conformidade com os requisitos de assinatura de instalação do dispositivo PnP.
/Ms
Usa várias semânticas de verificação. Esse é o comportamento padrão de uma chamada de função WinVerifyTrust no Windows 8 e superior.
/o Versão
Verifica o arquivo de acordo com a versão do sistema operacional. O formato do argumento Version é PlatformID:VerMajor.VerMinor.BuildNumber
Recomenda-se o uso da opção /o . Se /o não for especificado, o SignTool poderá retornar resultados inesperados. Por exemplo, se você não incluir a opção /o , os catálogos do sistema que validam corretamente em sistemas operacionais mais antigos podem não ser validados corretamente em um sistema operacional mais recente.
/pág. 7
Verifica arquivos PKCS #7. Nenhuma política existente é usada na validação de PKCS #7. A assinatura é verificada e uma cadeia é compilada para o certificado de assinatura.
/pa
Configura o SignTool para verificar se a assinatura digital de cada um dos arquivos especificados pelo argumento FileName está em conformidade com os requisitos de assinatura de instalação do dispositivo PnP.
Observação
Essa opção não pode ser usada com as opções catdb .
/pg PolicyGUID
Especifica uma política de verificação por GUID. O PolicyGUID corresponde à ActionID da política de verificação.
Observação
Essa opção não pode ser usada com as opções catdb .
/ph Especifica que a Ferramenta de Assinatura deve imprimir e verificar os valores de hash da página.
/r Nome_do_Assunto_raiz
Especifica o nome da entidade do certificado raiz ao qual o certificado de autenticação deve ser encadeado. Esse valor pode ser uma subcadeia de caracteres do nome da entidade inteiro do certificado raiz.
/Tw
Especifica que um aviso será gerado se a assinatura não tiver carimbo de data/hora.
Opções gerais
/q
Configura o SignTool para não exibir nenhuma saída na execução bem-sucedida e saída mínima para execução com falha.
/v
Configura o SignTool para exibir a versão detalhada das mensagens de operação e aviso.
/?
Configura o SignTool para exibir informações de ajuda em uma janela de comando.
Filename...
Especifica uma lista de um ou mais nomes de arquivo. Dependendo do comando, o SignTool assinará, marcará a data e hora ou verificará os arquivos especificados. Se o comando catdb for usado, o SignTool adicionará ou removerá os arquivos especificados de um banco de dados de catálogo.
Para os comandos sign, timestamp e verify, um arquivo pode ser um arquivo de catálogo para um pacote de driver ou um arquivo de driver.
Para o comando catdb , um arquivo deve ser um arquivo de catálogo para um pacote de driver.
Comentários
O SignTool oferece suporte a um grande número de opções. As opções descritas neste tópico são limitadas àquelas que você pode usar para assinar ou verificar um pacote de driver ou arquivo de driver.
Para obter uma lista completa dos parâmetros do SignTool, consulte o site do Microsoft SignTool .
Para obter mais informações sobre como assinar arquivos, consulte o site das Ferramentas de Criptografia da Microsoft.
Uma versão de 32 bits do SignTool está localizada na pasta bin\i386 do WDK. Uma versão de 64 bits da ferramenta está localizada nas pastas bin\amd64 e bin\ia64 do WDK.
Exemplos
Veja a seguir um exemplo de como assinar o arquivo de catálogo de um pacote de driver usando um SPC (Certificado de Editor de Software) e um certificado cruzado correspondente. Este exemplo é válido para assinar um pacote de driver para versões de 64 bits do Windows Vista e versões posteriores do Windows, que impõem a política de assinatura de código do modo kernel. O exemplo assina o arquivo de catálogo do pacote de driver AbcCatFileName.cat. Para assinar o arquivo de catálogo, o exemplo usa o certificado cruzado AbcCrossCertificate e o certificado AbcSPCCertificate. O certificado AbcSPCCertificate está localizado no repositório de certificados AbcCertificateStore.
O exemplo também usa um servidor de carimbo de data/hora disponível publicamente para assinar o arquivo de catálogo. O servidor de carimbo de data/hora é fornecido pela DigiCert e sua URL é http://timestamp.digicert.com
. Para obter mais informações, consulte RFC3161 servidor TSA (Autoridade de Carimbo de Data/Hora) compatível.
SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcCatFileName.cat
Veja a seguir um exemplo de como inserir uma assinatura em um arquivo de driver usando um SPC e um certificado cruzado. Todos os parâmetros são os mesmos do exemplo que assina um arquivo de catálogo, exceto que o arquivo assinado é AbcDriverFile.sys em vez do arquivo de catálogo AbcCatFileName.cat.
SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcDriverFile.sys
Veja a seguir um exemplo de como assinar o arquivo de catálogo de um pacote de driver usando um certificado de versão comercial ou um certificado de teste comercial. Este exemplo é válido para assinar um pacote de driver para versões de 32 bits do Windows Vista e versões posteriores do Windows, que não impõem a política de assinatura de código do modo kernel. O exemplo assina o arquivo de catálogo do pacote de driver CatalogFileName.cat. O exemplo usa o certificado de teste AbcTestCertificate, localizado no repositório de certificados TestCertificateStore, para assinar o arquivo de catálogo.
O exemplo também usa um servidor de carimbo de data/hora disponível publicamente para assinar o arquivo de catálogo. O servidor de carimbo de data/hora é fornecido pela DigiCert e sua URL é http://timestamp.digicert.com
.
SignTool sign /s TestCertificateStore /n AbcTestCertificate /t http://timestamp.digicert.com CatalogFileName.cat
Verificando exemplos
Veja a seguir um exemplo de como verificar se a assinatura do arquivo de catálogo de um pacote de driver está em conformidade com a política de assinatura de código do modo kernel e os requisitos de assinatura de instalação do dispositivo PnP. O exemplo verifica a assinatura do arquivo de catálogo AbcCatalogFile.cat.
SignTool verify /kp CatalogFileName.cat
Veja a seguir um exemplo de como verificar se a assinatura de um arquivo listado no arquivo de catálogo de um pacote de driver está em conformidade com a política de assinatura de código do modo kernel e os requisitos de assinatura de instalação do dispositivo PnP. O exemplo verifica a assinatura do arquivo AbcDriverPackage.inf, que deve ter uma entrada de impressão digital no arquivo de catálogo CatalogFileName.cat.
SignTool verify /kp /c CatalogFileName.cat AbcDriverPackage.inf
Veja a seguir um exemplo de como verificar se uma assinatura inserida está em conformidade com a política de assinatura de código no modo kernel no Windows Vista e versões posteriores do Windows. O exemplo verifica a assinatura inserida no arquivo de driver AbcDriverFile.sys.
SignTool verify /kp AbcDriverFile.sys
Veja a seguir um exemplo de como verificar se a assinatura do arquivo de catálogo de um pacote de driver está em conformidade com os requisitos de assinatura de instalação do dispositivo PnP. O exemplo verifica a assinatura do arquivo de catálogo CatalogFileName.cat.
SignTool verify /pa CatalogFileName.cat
Exemplo de adição de um arquivo de catálogo ao banco de dados de componentes do sistema (driver)
Veja a seguir um exemplo de como usar o SignTool para adicionar o arquivo de catálogo CatalogFileName.cat ao banco de dados do componente do sistema (driver). A opção /v configura o SignTool para operar no modo detalhado e a opção /u configura o SignTool para gerar um nome exclusivo para o arquivo de catálogo que está sendo adicionado, se necessário, para evitar a substituição de um arquivo de catálogo já existente que tenha o mesmo nome de CatalogFileName.cat.
SignTool catdb /v /u CatalogFileName.cat