Partilhar via


Assinatura de certificação 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 de atestado do Windows 10.

Importante

A partir de 1º de março de 2023, os drivers assinados por atestado destinados ao público de varejo não serão mais publicados no Windows Update. O suporte continua para drivers com assinatura de atestado ao testar cenários com as opções CoDev ou Test Registry Key/Surface SSRK.

Pré-requisitos

Criar o arquivo CAB

O procedimento a seguir cria um envio de arquivos CAB usando o exemplo de driver Echo para ilustrar as etapas.

Um envio de arquivo CAB típico deve conter os seguintes componentes:

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

  • O arquivo INF (.inf) do driver usado pelo dashboard para facilitar o processo de assinatura.

  • O arquivo de símbolo usado para depurar informações, como 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 arquivos de catálogo e substitui todos os arquivos de catálogo enviados anteriormente.

Observação

Cada pasta de driver em seu arquivo CAB deve suportar o mesmo conjunto de arquiteturas. Por exemplo, eles devem suportar x86, x64 ou todos devem suportar x86 e x64.

Não use caminhos de compartilhamento de arquivos UNC quando fizer 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 ficheiro CAB, siga estes passos:

  1. Reúna os binários a serem registrados em um único diretório. Este exemplo usa a C:\Echo pasta.

  2. Abra uma janela de Prompt de Comando com privilégios de Administrador.

  3. Digite o MakeCab /? comando para ver as opções de comando:

    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 ficheiro de entrada DDF para o ficheiro cab. Para o driver Echo neste exemplo, a entrada pode ser semelhante ao código a seguir:

    ;*** 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 comando deve exibir o número de arquivos no arquivo CAB criado. Neste 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 ficheiro CAB com o seu certificado EV

O próximo passo do procedimento é assinar o arquivo CAB com seu certificado EV.

Use o processo recomendado pelo seu provedor de certificado EV. Por exemplo, para assinar seu arquivo CAB com um Certificado/Algoritmo Digest/Carimbo de data/hora SHA256, digite 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 ficheiro Cab assinado pela EV no Centro de Parceiros.

Depois de assinar o arquivo CAB, você estará pronto para enviá-lo no Partner Center:

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

  2. Clique em Enviar novo hardware:

    Captura de tela da lista de envios de hardware.

  3. Na seção Pacotes e propriedades de assinatura, insira um nome de produto para a submissão do controlador. Esse nome pode ser usado para pesquisar e organizar seus envios de driver.

    Observação

    O nome é visível quando partilha o seu condutor com outra empresa.

  4. Deixe ambas as opções de assinatura de teste desmarcadas (não selecionadas).

  5. Para a opção Assinaturas solicitadas , selecione as assinaturas a serem incluídas no pacote de driver:

    Captura de tela mostrando as opções para enviar o driver Echo para assinatura.

  6. Selecione Enviar na parte inferior da página.

  7. Após a conclusão do processo de assinatura, baixe o driver assinado no painel de hardware.

Valide se o driver está devidamente assinado

Confirme se o driver foi assinado corretamente com estes passos:

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

  2. Abra uma janela de Prompt de Comando com privilégios de Administrador.

  3. Digite o seguinte comando para verificar se o driver está assinado conforme o esperado:

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

     C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
    
  5. Para confirmar os EKUs do controlador, execute os seguintes passos:

    1. Abra o Windows Explorer e localize o arquivo binário. Clique com o botão direito do mouse no arquivo e selecione Propriedades.

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

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

    4. Na guia Detalhes , selecione Uso Avançado de Chaves.

O motorista usa o seguinte processo quando ele demite o motorista:

  1. Anexe uma assinatura incorporada Microsoft SHA2.

  2. Se os binários do driver forem incorporados e assinados pelo cliente com os seus próprios certificados, as assinaturas devem ser substituídas.

  3. Crie e assine um novo arquivo de catálogo com um certificado SHA2 da Microsoft. O catálogo substitui qualquer catálogo existente fornecido pelo cliente.

Teste seu driver no Windows

Instale o driver de exemplo e teste-o no Windows:

  1. Abra uma janela de Prompt de Comando com privilégios de Administrador.

  2. Vá para a pasta do pacote de driver e digite o seguinte comando.

    C:\Echo> devcon install echo.inf root\ECHO
    
  3. Confirme se o processo de instalação do driver não mostra a seguinte mensagem de erro:

    O Windows não pode verificar o editor deste software de driver mensagem.

Criar uma submissão com vários drivers

Submeta vários drivers simultaneamente seguindo estas etapas:

  1. Crie um subdiretório para cada driver:

    Diagrama que mostra um exemplo da estrutura de diretórios para assinatura de drivers.

  2. Prepare um arquivo CAB de entrada DDF que faça referência aos subdiretórios. Neste exemplo, a entrada pode ser semelhante ao código a seguir:

    ;*** 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