Compartilhar via


Solução de problemas de instalação de assinatura de driver

A instalação de um driver assinado por versão é a mesma descrita em Instalando, desinstalando e carregando o pacote de driver de Test-Signed na assinatura de teste, exceto por duas etapas adicionais necessárias ao instalar usando qualquer um dos métodos descritos lá.

Se o signatário do pacote de driver ainda não tiver sido configurado no sistema para ser confiável, você poderá ver a caixa de diálogo Segurança do Windows a seguir.

captura de tela mostrando a caixa de diálogo de segurança do Windows.

Selecionar a caixa de marcar não mostrará essa caixa de diálogo novamente no computador se o driver estiver instalado novamente ou se o driver for removido por algum motivo.

Nota O sistema verifica se as informações do editor são precisas com base no SPC usado para assinar o catálogo. Se o nível de confiança do editor for desconhecido, como será verdadeiro para Contoso.com, o sistema exibirá a caixa de diálogo. Para que a instalação continue, o usuário deve selecionar Instalar. Para obter mais informações sobre a confiança e a instalação do driver, consulte Práticas recomendadas de assinatura de código.

Um driver sem sinal mostrará a caixa de diálogo a seguir, que permite que um usuário instale um driver não assinado (isso pode não funcionar na versão x64 do Windows).

captura de tela mostrando a caixa de diálogo de aviso de segurança do Windows.

Verifique se o driver de Release-Signed está operando corretamente

Use Gerenciador de Dispositivos para exibir as Propriedades do driver (descritas anteriormente para o driver assinado por teste). Abaixo está a captura de tela para mostrar se o driver está funcionando.

captura de tela mostrando o dispositivo da torradeira no gerenciador de dispositivos.

Solucionar problemas de drivers de Release-Signed

Várias maneiras comuns de solucionar problemas com o carregamento de drivers assinados ou assinados de teste estão listadas abaixo:

  • Use Gerenciador de Dispositivos para marcar se o driver está carregado e assinado, conforme descrito em Verificar se o driver de Test-Signed está operando corretamente da assinatura de teste.
  • Abra o arquivo setupapi.dev.log criado no diretório %windir%\inf após a instalação do driver. Consulte a seção sobre como definir a entrada do Registro e renomear o arquivo setupapi.dev.log antes de instalar o driver.
  • Verifique o log de auditoria de segurança do Windows e os logs de eventos de Integridade do Código.

Analisando o arquivo Setupapi.dev.log

Conforme explicado anteriormente, todas as informações de instalação do driver serão registradas (acrescentadas) ao arquivo setupapi.dev.log no diretório %windir%\inf. Ao testar a instalação do pacote de driver, se o arquivo for renomeado antes da instalação de um driver, um novo arquivo de log será gerado. Um novo arquivo de log será mais fácil de pesquisar logs importantes de uma nova instalação de driver. No entanto, o arquivo de log não deve ser renomeado como parte de um cenário de produção. O arquivo de log pode ser aberto em qualquer software de edição de texto.

A coluna mais à esquerda pode ter um único ponto de exclamação "!" ou vários pontos de exclamação "!!!". O único ponto de exclamação é uma mensagem de aviso, mas o ponto de exclamação triplo indica uma falha.

Você verá o ponto de exclamação único a seguir ao instalar uma versão do pacote de driver assinada com um certificado SPC fornecido pelo fornecedor da AC. Estes são avisos de que o arquivo cat ainda não foi verificado.

!    sig:                Verifying file against specific (valid) catalog failed! (0x800b0109)
!    sig:                Error 0x800b0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
     sig:                Success: File is signed in Authenticode(tm) catalog.
     sig:                Error 0xe0000242: The publisher of an Authenticode(tm) signed catalog has not yet been established as trusted.

Se você selecionar o botão "Instalar" na caixa de diálogo mostrada quando o signatário ainda não for confiável neste computador, você verá o log abaixo, o que, na maioria dos casos, significa que o driver será instalado e carregará bem. O Gerenciador de Dispositivos não relatará erros ou um ponto de exclamação amarelo para o driver.

!    sto:           Driver package signer is unknown but user trusts the signer.

Se você também vir o log de erros a seguir no arquivo de log, o driver poderá não ser carregado.

O arquivo setupapi.dev.log também relatou o seguinte erro:

!!!  dvi:                          Device not started: Device has problem: 0x34: CM_PROB_UNSIGNED_DRIVER.

Observe que 0x34 é o Código 52.

Para solucionar problemas, examine o arquivo de log e procure pontos de exclamação ao lado de um binário de driver. Execute o signtool verify comando no arquivo cat e em outros binários assinados inseridos.

Normalmente, as informações do arquivo de log são suficientes para resolve o problema. Se as verificações acima não localizarem a causa raiz, marcar log de auditoria de segurança do Windows e os logs de eventos de integridade do código, descritos na próxima seção.

Usando o log de auditoria do Segurança do Windows

Se o driver não for carregado porque não tinha uma assinatura válida, ele será registrado como um evento de falha de auditoria. Os eventos de falha de auditoria são registrados no log de segurança do Windows, indicando que a Integridade do Código não pôde verificar o hash de imagem do arquivo de driver. As entradas de log incluem o nome do caminho completo do arquivo de driver. Os eventos de auditoria do log de segurança serão gerados somente se a política de auditoria de segurança local habilitar o registro em log de eventos de falha do sistema.

Nota O log de auditoria de segurança deve ser habilitado explicitamente. Para obter mais informações, consulte Apêndice 3: Habilitar log de eventos de integridade de código e Auditoria do sistema.

Para examinar o log de segurança:

  1. Abra uma janela de comandos com privilégios elevados.
  2. Para iniciar o Windows Visualizador de Eventos, execute Eventvwr.exe. Visualizador de Eventos também podem ser iniciados no aplicativo gerenciamento de computador Painel de Controle.
  3. Abra o log de auditoria de segurança do Windows.
  4. Verifique o log para eventos de integridade do sistema com uma ID de evento 5038.
  5. Selecione e segure (ou clique com o botão direito do mouse) a entrada de log e selecione Propriedades do Evento para exibir sua caixa de diálogo Propriedades do Evento, que fornece uma descrição detalhada do evento.

A captura de tela abaixo mostra a caixa de diálogo Propriedades do Evento para um evento de log de auditoria de segurança causado por um arquivo de Toaster.sys sem sinal.

captura de tela mostra a caixa de diálogo de propriedades do evento.

Usando o log de eventos operacionais do evento de integridade de código

Se o driver não foi carregado porque não foi assinado ou gerou um erro de verificação de imagem, a Integridade do Código registra os eventos no log de eventos operacionais de Integridade do Código. Os eventos operacionais de Integridade do Código estão sempre habilitados.

Os eventos de Integridade do Código podem ser exibidos com Visualizador de Eventos.

Para examinar o log operacional de integridade do código

  1. Abra uma janela de comandos com privilégios elevados.
  2. Para iniciar o Windows Visualizador de Eventos, execute Eventvwr.exe. Visualizador de Eventos também pode ser iniciado no aplicativo de Painel de Controle de Gerenciamento de Computador.
  3. Abra o log de Integridade do Código do Windows.
  4. Selecione e segure (ou clique com o botão direito do mouse) uma entrada de log e selecione Propriedades do Evento para exibir sua caixa de diálogo Propriedades do Evento, que fornece uma descrição detalhada do evento.

A captura de tela abaixo mostra a caixa de diálogo Propriedades do Evento para um evento de log operacional de Integridade do Código que foi causado por um arquivo de Toaster.sys sem sinal.

captura de tela mostrando o visualizador de eventos.

Usando os eventos informativos no log detalhado de integridade do código

A exibição detalhada do log informativo de Integridade do Código rastreia eventos para todas as verificações de imagem no modo kernel. Esses eventos mostram a verificação de imagem bem-sucedida de todos os drivers carregados no sistema.

Para habilitar a exibição detalhada integridade do código:

  1. Inicie Visualizador de Eventos, como no exemplo anterior.
  2. Delete o nó Integridade do Código para que ele se concentre.
  3. Selecione e segure (ou clique com o botão direito do mouse) Integridade do Código e selecione o item Exibir no menu de atalho.
  4. Selecione Mostrar Logs analíticos e de depuração. Isso cria uma subárvore com dois nós adicionais: Operacional e Detalhado.
  5. Selecione e segure (ou clique com o botão direito do mouse) no nó Detalhado e selecione as Propriedades no menu de atalho.
  6. Na guia Geral, selecione Habilitar Registro em Log para habilitar o modo de log detalhado.
  7. Reinicialize o sistema para recarregar todos os binários do modo kernel.
  8. Após a reinicialização, abra o snap-in Gerenciamento de Computador do MMC e exiba o log de eventos detalhado de Integridade do Código.

Alguns problemas adicionais de assinatura de driver conhecidos são descritos no Apêndice 4: Problemas de assinatura de driver.