Compartilhar via


SignTool

O SignTool (Signtool.exe) é uma ferramenta de CryptoAPI de linha de comando que assina digitalmente arquivos, verifica assinaturas em arquivos e arquivos de carimbos de data/hora.

    SignTool [Operation] [Options] [FileName ...]

Lista parcial de operações, opções e argumentos

Operations

Catdb
Configura o SignTool para atualizar um banco de dados de catálogo. 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 SignTool para carimbo de data/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 nenhuma opção /d nem /g for usada, o SignTool atualizará o componente do sistema e o banco de dados do driver.

/gGuid
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 do catálogo. Se essa opção não for especificada, SignTool adicionará os arquivos de catálogo especificados ao banco de dados do 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 do catálogo. Se essa opção não for especificada, o SignTool substituirá qualquer catálogo existente que tenha o mesmo nome que o catálogo que está sendo adicionado.

Opções de operação de sinal

/Um Configura o SignTool para selecionar automaticamente o melhor certificado de assinatura. Se essa opção não estiver presente, a SignTool espera encontrar apenas um certificado de assinatura.

/acCrossCertFileName
Especifica o nome de um arquivo de certificado cruzado usado com um Certificado do Editor de Software (SPC) chamado CertificateName e instalado no repositório de certificados StoreName. Essa opção só deverá ser usada se o certificado de autenticação for um SPC.

/cCertTemplateName
Especifica o Nome do Modelo de Certificado (uma extensão da Microsoft) para o certificado de assinatura.

/cspCSPName
Especifica o provedor de serviços de criptografia (CSP) que contém o contêiner de chave privada.

/dDesc
Especifica uma descrição do conteúdo assinado.

URL /du
Especifica uma URL para a descrição expandida do conteúdo assinado.

/fSignCertFile
Especifica o certificado de assinatura em um arquivo. Há suporte apenas para o formato de arquivo PFX (Troca de Informações Pessoais). Você pode usar a ferramenta Pvk2Pfx para converter arquivos SPC e PVK no 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 CSP e o nome do contêiner de chave privada, respectivamente.

/Fd
Especifica o algoritmo de resumo do arquivo a ser usado na criação de assinaturas de arquivo. O padrão é SHA1.

/iIssuerName
Especifica o nome do emissor de certificado de assinatura. Esse valor pode ser uma subcadeia de caracteres do nome do emissor inteiro.

DLL /j
Especifica o nome de uma DLL que fornece atributos da assinatura.

/jpParameterName
Especifica um parâmetro que é passado para a DLL especificada pelo comando /j .

/kcPrivKeyContainerName
Especifica o nome do contêiner de chave da chave privada.

/nSubjectName
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.

/pSenha
Especifica a senha a ser usada durante a abertura de um arquivo PFX. Um arquivo PFX pode ser especificado usando a opção /f

Caminho /p7
Especifica se um arquivo PKCS (Public Key Cryptography Standards) #7 é produzido para cada arquivo de conteúdo especificado. Os arquivos PKCS nº 7 são nomeados path\filename.p7.

Valor /p7ce
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.

/p7coOID
Especifica o OID (identificador de objeto) que identifica o conteúdo assinado de PKCS #7.

/Ph Se houver suporte, gerará hashes de página para arquivos executáveis.

/rRootSubjectName
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.

/sStoreName
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.

Hash /sha1
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.

URL /t
Especifica uma URL para um servidor de carimbo de data/hora. Se essa opção não for fornecida, o arquivo assinado não será carimbo de data/hora. Um arquivo de catálogo ou arquivo de driver deve ser 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.

/tdalg
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 .

/uUso
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 Componente do Sistema 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 arquivos PKCS nº 7.

URL /t
Especifica a URL do servidor de carimbo de data/hora. O arquivo que está sendo carimbo de data/hora deve ter sido assinado anteriormente

/tdalg
Solicita um algoritmo de resumo usado pelo servidor do carimbo de data/hora RFC 3161. /td é usado com a opção /tr .

/tpindex
Marca com o carimbo de data/hora a assinatura em index.

/tralg
Solicita um algoritmo de resumo usado pelo servidor do carimbo de data/hora RFC 3161. /td é usado com a opção /tr .

Verificar 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 conectado a nenhum catálogo, o SignTool tentará verificar a assinatura inserida 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 em que 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 do catálogo de componentes do sistema (driver) é pesquisado para o catálogo em que o arquivo foi conectado.

/agCatDBGUID
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.

/cCatalogFileName
Especifica o nome de um arquivo de catálogo.

/D Especifica que a Ferramenta de Assinatura 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.

/oVersion
Verifica o arquivo de acordo com a versão do sistema operacional. O formato do argumento Version é PlatformID:VerMajor.VerMinor.BuildNumber

O uso da opção /o é recomendado. Se /o não for especificado, SignTool poderá retornar resultados inesperados. Por exemplo, se você não incluir a opção /o , os catálogos do sistema que são validados corretamente em sistemas operacionais mais antigos poderão não ser validados corretamente em um sistema operacional mais recente.

/p7
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 .

/pgPolicyGUID
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 valores de hash de página.

/rRootSubjectName
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 for carimbo de data/hora.

Opções gerais

/q
Configura o SignTool para não exibir nenhuma saída na execução bem-sucedida e na saída mínima para execução com falha.

/v
Configura o SignTool para exibir a versão detalhada da operação e das mensagens de 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, SignTool assinará, carimbo de data/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 dá suporte a um grande número de opções. As opções descritas neste tópico são limitadas às que você pode usar para assinar ou verificar um pacote de driver ou arquivo de driver.

Para obter uma lista completa dos parâmetros SignTool, consulte o site do Microsoft SignTool .

Para obter mais informações sobre como assinar arquivos, consulte o site do Microsoft Cryptography Tools .

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 (Software Publisher Certificate) 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 no 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 AbcCrossCertificate entre certificados 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.

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 pelo fato de 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 no 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 como adicionar um arquivo de catálogo ao banco de dados do componente 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 SignTool para operar no modo detalhado e a opção /u configura SignTool para gerar um nome exclusivo para o arquivo de catálogo que está sendo adicionado, se necessário, para impedir a substituição de um arquivo de catálogo já existente que tenha o mesmo nome que CatalogFileName.cat.

SignTool catdb /v /u CatalogFileName.cat