Como testar drivers de pré-produção com a Inicialização Segura habilitada

Em sistemas de varejo e produção, o kernel do Windows só confia e carrega drivers com uma assinatura WHQL/WHCP de produção. Para testar drivers de pré-produção, é necessário que os desenvolvedores de driver habilitem TESTSIGNING para habilitar o carregamento de drivers de não produção. TESTSIGNING requer a desativação do Secure Boot, para apresentar uma diferença nos ambientes de teste e produção.

O kernel do Windows dá suporte ao carregamento de drivers de pré-produção assinados com a assinatura de pré-produção WHQL/WHCP. A assinatura WHQL/WHCP pode ser acessada por meio do Microsoft Hardware Developer Center (HDC).

Pré-requisitos

  • Assinar seus drivers de pré-produção com o painel de hardware do Partner Center

  • Baixe EnableUefiSbTest.exe da versão mais recente do WDK (Windows Driver Kit) ou do Centro de Download. O local de instalação padrão da ferramenta EnableUefiSbTest é C:\Arquivos de Programas (x86)\Windows Kits\10\tools\{arch}\SecureBoot\EnableSB. {arch} pode ser um dos {amd64, x86, arm, arm64}. As políticas estão localizadas no mesmo diretório SecureBoot:C:\Arquivos de Programas (x86)\Windows Kits\10\tools\{arch}\SecureBoot\Policies.

Habilitar suporte para a assinatura WHQL/WHCP de pré-produção

Depois que o driver for assinado em pré-produção, você estará pronto para provisionar um computador de teste em que instalará o driver.

As ferramentas de provisionamento e o conteúdo são fornecidos a partir de Windows 11, versão 22H2.

O uso da ferramenta EnableUefiSbTest é recomendado. Como alternativa, você pode provisionar manualmente a chave raiz de teste da Microsoft na seção Testes manuais de inicialização segura do HLK (UefiSecureBootManualTests.zip\ManualTests\certs\test\db_MSFTtestSigningRoot.cer). A chave de teste da Microsoft deve ser incluída no banco de dados de inicialização segura (DB) e na política de configuração de inicialização segura (SBCP) para habilitar a confiança para a assinatura do driver WHQL/WHCP de pré-produção.

Observação

Ao provisionar qualquer um dos bancos de dados de Inicialização Segura, nunca assine uma carga com as chaves de teste da Microsoft dentro.

Etapas de provisionamento

  1. No menu UEFI do sistema, desative a Inicialização Segura e limpe as chaves de Inicialização Segura, se aplicável. Isso permite que a ferramenta de provisionamento defina as chaves de teste para confiar no arquivo de política de Inicialização Segura e reabilitar a Inicialização Segura.

  2. Baixe o arquivo .p7b correto da política de Inicialização Segura, dependendo da arquitetura do sistema, e da ferramenta de provisionamento que o acompanha, EnableUefiSbTest.exe, do WDK. Para obter o local da ferramenta de provisionamento, consulte Pré-requisitos.

  3. Execute o seguinte comando em uma instância elevada do PowerShell ou Terminal e valide se os valores PK, KEK, db, dbx e OemId estão vazios ("Não Encontrado"):

    EnableUefiSbTest.exe /dump
    

    Se a Inicialização Segura estiver desabilitada e as chaves forem limpas com êxito, a seguinte saída será esperada:

    EnableUefiSbTest.exe /dump
    
    Name: PK
    Not Found
    
    Name: KEK
    Not Found
    
    Name: db
    Not Found
    
    Name:dbx
    Not Found
    
    Name: OemId
    Not Found
    
  4. Provisione as chaves de teste de Inicialização Segura no banco de dados de Inicialização Segura e reative a Inicialização Segura executando o seguinte comando em uma instância elevada do PowerShell ou do Terminal:

    EnableUefiSbTest.exe
    

    Observação

    EnableUefiSbTest.exe não emitirá/retornará nada após a execução bem-sucedida.

    Opcionalmente, especifique o thirdparty comando para provisionar o certificado de CA UEFI da Microsoft junto com as chaves padrão no banco de dados de inicialização segura. Isso permite confiança para executáveis EFI assinados pela Microsoft UEFI CA, como ROMs de opção e carregadores de inicialização não Windows.

    EnableUefiSbTest.exe /thirdparty
    
  5. Para dispositivos que executam o Windows baseado em desktop, monte a partição EFI do sistema e copie o arquivo de política de Inicialização Segura (.p7b) para S:/EFI/Microsoft/Boot executando o seguinte comando em uma instância elevada do PowerShell ou do Terminal:

    mountvol s: /s
    copy-item <path_to_p7b> S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
    

    Observação

    Como o kernel do Windows requer o arquivo de política de Inicialização Segura na forma de , o nome e o formato do SecureBootPolicy.p7barquivo não devem ser modificados.

  6. Para dispositivos que não executam o Windows baseado em desktop, copie o arquivo correspondente PreProductionPolicy.pol para \EFI\Microsoft\Boot\Policies. Em seguida, exclua FullDebugPolicy.pol de \EFI\Microsoft\Boot\Policies.

  7. Reinicialize o sistema para permitir que o kernel do Windows atualize as políticas. A Inicialização Segura agora é reativada e provisionada automaticamente pela ferramenta de provisionamento. Isso pode ser validado executando EnableUefiSbTest.exe /dump novamente como administrador e validando se apenas os dbx valores e OemId estão vazios ("Não encontrado").

  8. O sistema está pronto para validar o conteúdo do driver assinado WHQL/WHCP de pré-produção. A reinicialização do sistema não afetará o estado do dispositivo, desde que as chaves de Inicialização Segura e os arquivos de política de Inicialização Segura não sejam modificados.

Etapas de desprovisionamento

Para desprovisionar o sistema e recusar a confiança de assinatura de pré-produção no sistema:

  1. Exclua os arquivos de política de Inicialização Segura da partição EFI montada executando os seguintes comandos em uma instância elevada do PowerShell ou do Terminal:

    mountvol s: /s
    rm  S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
    

    Observação

    Se as validações estiverem sendo executadas em um HoloLens 2, os arquivos de política .pol também deverão ser removidos de S:/EFI/Microsoft/Boot/Policies.

  2. Inicialize no menu UEFI do sistema e reconfigure as chaves de inicialização segura para as configurações de fábrica.

  3. Reinicialize o sistema e execute EnableUefiSbTest.exe /dumpo , que deve retornar valores não vazios para PK, KEK, dbe dbx valores que indicam que as chaves foram retornadas ao estado de fábrica.

    Observação

    Recomendamos a instalação limpa do Windows no sistema para desprovisionar um sistema destinado a ambientes de varejo.

Perguntas Frequentes

P: O EnableUefiSbTest.exe /dump comando está mostrando apenas um resultado para PK. Há algo de errado?

R: Isso acontece se a ferramenta for executada como um usuário padrão em vez de como administrador.

P: O EnableUefiSbTest.exe /dump comando retorna um erro que não reconheço. O que devo fazer?

R: Um erro pode ser gerado pela ferramenta quando a Inicialização Segura não foi desabilitada com êxito e/ou as chaves de Inicialização Segura não foram apagadas. Verifique se a Inicialização Segura está desabilitada.