Partilhar via


Controladores do Windows assinados através de atestação

Este artigo descreve como assinar um driver usando a assinatura de atestado.

Observação

Os drivers assinados por atestação, destinados a consumidores de retalho, não são publicados no Windows Update. O suporte continua para drivers assinados por atestação quando está a testar cenários com as opções CoDev ou Test Registry Key / Surface SSRK.

Pré-requisitos

  • Leia e compreenda os requisitos para condutores assinados por atestação para cenários de teste.

  • Registe-se no Programa de Desenvolvimento de Hardware. Se não estiver registado, siga os passos em Inscreva-se no Microsoft Windows Hardware Developer Program.

  • Você deve ter um certificado de assinatura de código de validação estendida (EV). Verifique se a sua organização já tem um certificado de assinatura de código.

    • Se você tiver um certificado existente, disponibilize-o.

    • Se a sua organização não tiver um certificado, adquira um certificado EV.

  • Descarregue e instale o Windows Assessment and Deployment Kit (Windows ADK) seguindo o processo descrito em Descarregue e instale o Windows ADK.

  • (Opcional) Descarregue o exemplo do driver Echo utilizado neste artigo, disponível no GitHub.

Criar o arquivo CAB

O procedimento seguinte cria uma submissão de ficheiros CAB utilizando a amostra do driver Echo para ilustrar os passos.

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

  • O próprio driver (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 ficheiro .pdb é necessário para Microsoft ferramentas automatizadas de análise de falhas.

  • Os ficheiros de catálogo (.cat) são necessários e usados apenas para verificação da empresa. A Microsoft regenera ficheiros de catálogo e substitui quaisquer ficheiros de catálogo submetidos 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 descrição de dispositivo (DDF) como entrada para um 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. Pode selecionar o ficheiro CAB no Explorador de Ficheiros para verificar se contém os ficheiros esperados.

Assine o ficheiro CAB com o seu certificado EV

O passo seguinte é assinar o ficheiro CAB com o seu certificado de veículo elétrico.

Use o processo recomendado pelo seu provedor de certificado EV. Por exemplo, para assinar o seu ficheiro CAB com um carimbo temporal SHA256, introduza 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.

Submeta o ficheiro CAB assinado pelo EV no Centro de Parceiros

Depois de assinar o ficheiro CAB, está pronto para submeter o ficheiro no Centro de Parceiros:

  1. Vai ao painel de hardware do Partner Center e inicia sessão com as tuas credenciais.

  2. Selecione 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. Use este nome para procurar e organizar as suas submissões de condutores.

    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 ecrã que mostra as opções para submeter o driver Echo para assinatura.

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

  7. Depois de terminar o processo de assinatura, descarregue o driver assinado do painel de controlo de hardware.

Valide que o driver está devidamente assinado

Confirme se o seu motorista está devidamente assinado 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. Insira o seguinte comando para verificar se o driver está assinado como 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 Usos Melhorados de Teclas (EKUs) do driver, complete os seguintes passos:

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

    2. No separador de Assinaturas Digitais , selecione o item listado na lista de assinaturas.

    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 do Microsoft SHA-2.

  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 ficheiro de catálogo com um certificado Microsoft SHA-2. O catálogo substitui qualquer catálogo existente fornecido pelo cliente.

Teste o seu driver no Windows

Instala o driver de exemplo e testa-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 que o processo de instalação do driver não apresenta a seguinte mensagem de erro: "O Windows não pode verificar o fornecedor deste software do driver."

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 de estrutura de diretório de 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