Assinatura de atestado de drivers do Windows

Este artigo descreve como assinar um driver usando a assinatura de atestado. Para obter informações detalhadas e requisitos para assinatura de atestado, consulte Drivers assinados com atestado do Windows 10.

Importante

A partir de 1° de março de 2023, os drivers assinados por atestado direcionados a públicos de varejo não serão mais publicados no Windows Update. Os drivers assinados por atestado para cenários de teste ainda têm suporte ao selecionar opções CoDev ou chave do registro de testes / Surface SSRK.

Pré-requisitos

Criar o arquivo CAB

Nesta seção, percorremos o processo de criação de um envio de arquivos CAB. Estamos usando o exemplo de driver de eco para ilustrar o processo.

Um envio de arquivo CAB típico deve conter:

  • O próprio driver, por exemplo, Echo.sys

  • O arquivo INF do driver usado pelo painel para facilitar o processo de assinatura.

  • O arquivo de símbolo usado para depurar informações. Por exemplo, Echo.pdb. O arquivo .pdb é necessário para as ferramentas automatizadas de análise de falhas da Microsoft.

  • Os arquivos .CAT do catálogo são necessários e usados apenas para verificação da empresa. A Microsoft regenera os arquivos de catálogo e substitui todos os arquivos de catálogo enviados.

Observação

Cada pasta de driver em seu arquivo CAB deve dar suporte ao mesmo conjunto de arquiteturas. Por exemplo, eles devem dar suporte a x86, x64 ou todos devem dar suporte a x86 e x64.

Não use caminhos de compartilhamento de arquivos UNC ao fazer referência aos locais do driver (\\\server\share). Você deve usar uma letra de unidade mapeada para que o CAB seja válido.

Para criar o arquivo CAB:

  1. Reúna os binários a serem conectados em um único diretório. Neste exemplo, usamos C:\\Echo.

  2. Abra uma janela de prompt de comando como Administrador.

  3. Entre MakeCab /? para ver as opções do MakeCab:

    C:\Echo> MakeCab /?
    Cabinet Maker - Lossless Data Compression Tool
    
    MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination]
    MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...]
    
    source         File to compress.
    destination    File name to give compressed file. If omitted, the
                   last character of the source file name is replaced
                   with an underscore (_) and used as the destination.
    /F directives  A file with MakeCAB directives (may be repeated). Refer to
                   Microsoft Cabinet SDK for information on directive_file.
    /D var=value   Defines variable with specified value.
    /L dir         Location to place destination (default is current directory).
    /V[n]          Verbosity level (1..3).
    
  4. Prepare um arquivo de entrada cab file DDF. Para o nosso driver eco, pode ser algo assim:

    ;*** Echo.ddf example
    ;
    .OPTION EXPLICIT     ; Generate errors
    .Set CabinetFileCountThreshold=0
    .Set FolderFileCountThreshold=0
    .Set FolderSizeThreshold=0
    .Set MaxCabinetSize=0
    .Set MaxDiskFileCount=0
    .Set MaxDiskSize=0
    .Set CompressionType=MSZIP
    .Set Cabinet=on
    .Set Compress=on
    ;Specify file name for new cab file
    .Set CabinetNameTemplate=Echo.cab
    ; Specify the subdirectory for the files.
    ; Your cab file should not have files at the root level,
    ; and each driver package must be in a separate subfolder.
    .Set DestinationDir=Echo
    ;Specify files to be included in cab file
    C:\Echo\Echo.Inf
    C:\Echo\Echo.Sys
    
  5. Digite o seguinte comando para criar o arquivo CAB.

    C:\Echo> MakeCab /f "C:\Echo\Echo.ddf
    

    A saída do MakeCab deve exibir o número de arquivos no arquivo CAB criado. Nesse caso, deve haver dois arquivos.

    C:\Echo> MakeCab /f Echo.ddf
    Cabinet Maker - Lossless Data Compression Tool
    
    17,682 bytes in 2 files
    Total files:              2
    Bytes before:        17,682
    Bytes after:          7,374
    After/Before:            41.70% compression
    Time:                     0.20 seconds ( 0 hr  0 min  0.20 sec)
    Throughput:              86.77 Kb/second
    
  6. Localize o arquivo CAB no Disk1 subdiretório. Você pode selecionar o arquivo CAB no Explorador de Arquivos para verificar se ele contém os arquivos esperados.

Assine o arquivo CAB com seu certificado EV

  1. Para assinar o arquivo CAB com seu certificado EV, use o processo recomendado pelo provedor de certificado EV. Por exemplo, para assinar seu arquivo CAB com um certificado SHA256/algoritmo de resumo/carimbo de data/hora, insira o seguinte comando:

    C:\Echo> SignTool sign /s MY /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "C:\Echo\Disk1\Echo.cab"
    

    Importante

    Lembre-se de usar as melhores práticas do setor para gerenciar a segurança do processo de assinatura de código EV.

Envie o arquivo Cab assinado por EV usando o Partner Center

  1. Vá para o painel de hardware do Partner Center e entre usando suas credenciais.

  2. Selecione Enviar novo hardware.

    Captura de tela da lista de envios de hardware.

  3. Na seção Propriedade de pacotes de assinatura insira um nome de produto para o envio do driver. Esse nome pode ser usado para pesquisar e organizar seus envios de driver.

    Observação

    Se você compartilhar seu driver com outra empresa, ela verá esse nome.

  4. Deixe as duas opções de assinatura de teste desmarcadas.

  5. Em Assinaturas solicitadas, selecione quais assinaturas você deseja incluir no pacote de driver.

    Uma captura de tela mostrando as opções para enviar o driver de eco para assinatura.

  6. Desça na página e selecione Enviar.

  7. Quando o processo de assinatura estiver concluído, baixe o driver assinado no painel de hardware.

Valide se o driver foi assinado corretamente

Conclua as etapas a seguir para garantir que o driver foi assinado corretamente.

  1. Depois de baixar o arquivo de envio, extraia o arquivo de driver.

  2. Abra uma janela de prompt de comando como Administrador.

  3. Insira o comando a seguir para verificar se o driver foi assinado conforme o esperado.

    C:\Echo> SignTool verify Echo.Sys
    
  4. Para listar informações adicionais e fazer com que o SignTool verifique todas as assinaturas em um arquivo com várias assinaturas, insira o seguinte comando:

     C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
    
  5. Para confirmar os EKUs do driver, conclua as etapas a seguir.

    1. Abra o Windows Explorer e localize o arquivo binário. Selecione e mantenha pressionado (ou clique com o botão direito do mouse) o arquivo e selecione Propriedades.

    2. Na guia Assinaturas Digitais , selecione o item listado na lista Assinatura.

    3. Selecione Detalhes e, em seguida, selecione Visualizar Certificado.

    4. Na guia Detalhes , selecione Uso Aprimorado de Chave.

Quando o driver é recontratado pelo painel, o seguinte processo é usado:

  • Acrescenta uma assinatura incorporada do Microsoft SHA2.
  • Se os binários do driver forem inseridos e assinados pelo cliente com seus próprios certificados, essas assinaturas não serão substituídas.
  • Cria e assina um novo arquivo de catálogo com um certificado SHA2 da Microsoft. Esse catálogo substitui qualquer catálogo existente fornecido pelo cliente.

Teste seu driver no Windows

Use as instruções a seguir para instalar o driver de amostra.

  1. Abra uma janela de prompt de comando como Administrador. Acesse a pasta do pacote de driver e insira o seguinte comando.

    C:\Echo> devcon install echo.inf root\ECHO
    
  2. Confirme se o processo de instalação do driver não exibe a mensagem "O Windows não pode verificar o editor deste software de driver". Caixa de diálogo de segurança do Windows.

Cria um envio com vários drivers

Para enviar vários drivers ao mesmo tempo:

  1. Crie um subdiretório para cada driver.

    Um diagrama mostrando um exemplo de estrutura de diretório de assinatura de driver.

  2. Prepare um arquivo CAB Arquivo de entrada DDF que faça referência aos subdiretórios. Poderá ser semelhante ao seguinte:

    ;*** Submission.ddf multiple driver example
    ;
    .OPTION EXPLICIT     ; Generate errors
    .Set CabinetFileCountThreshold=0
    .Set FolderFileCountThreshold=0
    .Set FolderSizeThreshold=0
    .Set MaxCabinetSize=0
    .Set MaxDiskFileCount=0
    .Set MaxDiskSize=0
    .Set CompressionType=MSZIP
    .Set Cabinet=on
    .Set Compress=on
    ;Specify file name for new cab file
    .Set CabinetNameTemplate=Echo.cab
    ;Specify files to be included in cab file
    ; First Driver
    .Set DestinationDir=DriverPackage1
    C:\DriverFiles\DriverPackage1\Driver1.sys
    C:\DriverFiles\DriverPackage1\Driver1.inf
    ; Second driver
    .Set DestinationDir=DriverPackage2
    C:\DriverFiles\DriverPackage2\Driver2.sys
    C:\DriverFiles\DriverPackage2\Driver2.inf