Partilhar via


Assinar um driver para lançamento público

Antes de disponibilizar publicamente um pacote de driver, recomendamos que você envie o pacote para certificação. Para obter mais informações, consulte Certificação de Hardware do Windows e [Hardware Dashboard Services](.. /dashboard/index.md. Para enviar um pacote de driver para certificação, você deve assinar o pacote com um certificado obtido de uma autoridade de certificação confiável, como a VeriSign. Para obter mais informações, consulte Obter um certificado da VeriSign. Você também precisará de um certificado cruzado, que é fornecido pela Microsoft.

Suponha que você tenha obtido um par de arquivos da Verisign: um arquivo de chave privada (PVK) e um certificado de publicação de software (SPC). Suponha também que você tenha uma solução do Microsoft Visual Studio que contenha um projeto de driver chamado MyDriver e um projeto de pacote de driver chamado MyDriver Package. Para assinar seu pacote de driver, siga estas etapas.

  1. Use a ferramenta Pvk2Pfx para criar um certificado PFX (Troca de Informações Pessoais). A ferramenta Pvk2Pfx usa seus arquivos PVK e SPC como entrada e cria um único arquivo PFX. Para este exercício, suponha que o arquivo PFX tenha o nome MyCert.pfx.

    Observação Depois de criar o arquivo PFX, você poderá reutilizá-lo para outros projetos de driver e em outros computadores de desenvolvimento de driver.

  2. Para determinar de qual certificado cruzado você precisa, consulte Certificados cruzados para assinatura de código no modo kernel. Verifique se o certificado cruzado necessário está em $(BASEDIR)\CrossCertificates, em que $(BASEDIR) é o diretório base dos kits do Windows (por exemplo, c:\Arquivos de Programas (x86)\Windows Kits\8.0\CrossCertificates). Se o certificado cruzado necessário não estiver lá, baixe o certificado cruzado da Microsoft e copie-o para $(BASEDIR)\CrossCertificates.

  3. No Visual Studio, abra a solução que contém os projetos MyDriver e MyDriver Package. Se a janela Gerenciador de Soluções ainda não estiver aberta, escolha Gerenciador de Soluções no menu Exibir. Na janela Gerenciador de Soluções, mantenha selecionado (ou clique com o botão direito do mouse) o projeto de pacote, MyDriver Package e escolha Propriedades.

  4. Nas páginas de propriedades do pacote, navegue até Propriedades de Configuração > Assinatura de Driver > Geral. Na lista suspensa Modo de Assinatura, selecione Assinatura de Produção. Para Certificado de Produção, siga um destes procedimentos:

    • Insira o caminho para o certificado de assinatura (por exemplo, c:\Certs\MyCert.pfx).

    • Escolha Selecionar do Arquivo e navegue até o certificado de assinatura.

    • Escolha Selecionar do Repositório e escolha um certificado que você importou anteriormente para um repositório de certificados.

      Observação Para importar um certificado para um repositório, selecione e segure (ou clique com o botão direito do mouse) no arquivo de certificado (arquivo PFX) e escolha Instalar PFX. Siga as instruções no Assistente de Importação de Certificado

      Observação Se você decidir usar um certificado diferente posteriormente, certifique-se de que o novo certificado seja importado para o repositório de certificados. Se você escolher Selecionar do Arquivo e navegar até o novo certificado, o novo certificado será importado automaticamente para o repositório de certificados. No entanto, se você inserir manualmente o caminho para o novo certificado, ele não será importado automaticamente para o repositório de certificados. Nesse caso, você deve selecionar e segurar (ou clicar com o botão direito do mouse) no novo arquivo de certificado e escolher Instalar PFX.

  5. Na página de propriedades Assinatura de Driver > Geral, para TimeStampServer, selecione um dos servidores de carimbo de data/hora na lista suspensa.

    Observação O uso de um dos servidores de carimbo de data/hora na lista suspensa requer que você esteja conectado à Internet ao criar seu pacote de driver. Se você precisar ser desconectado da Internet ao criar seu pacote de driver, desmarque o campo TimeStampServer.

  6. Nas páginas de propriedades do pacote, navegue até Propriedades de Configuração > Inf2Cat > Geral. Na lista suspensa Executar Inf2Cat, selecione Sim.

  7. Feche as páginas de propriedades do pacote.

  8. Mantenha selecionado (ou clique com o botão direito do mouse) o projeto de driver, MyDriver, e escolha Propriedades

  9. Nas páginas de propriedades do driver, navegue até Propriedades de Configuração > Assinatura de Driver > Geral. Defina TimeStampServer com o mesmo valor usado nas propriedades do pacote de driver. Defina o Modo de Assinatura como Assinatura de Produção e defina Certificado de Produção co o mesmo valor usado nas propriedades do pacote de driver.

  10. Quando estiver pronto para criar seu pacote de driver, pressione F5. O Visual Studio assinará automaticamente o pacote e o arquivo de driver. Se você tiver configurado a implantação, o Visual Studio também implantará seu pacote de driver assinado em um computador de teste. Para obter mais informações, consulte Provisionar um computador para implantação e teste de driver (WDK 8.1).

Exibição dos arquivos do pacote de driver

Depois de criar sua solução, navegue no Explorador de Arquivos até a pasta que contém o pacote de driver. Um dos arquivos no pacote é um arquivo de catálogo. O arquivo de catálogo contém a assinatura digital do pacote. Para obter um exemplo de exibição dos arquivos em um pacote assinado, consulte Criar um driver KMDF com base em um modelo.

Obtenção de uma assinatura de versão WHQL

Quando o pacote de driver passar nos testes de certificação, ele poderá ser assinado pelo WHQL (Windows Hardware Quality Labs). Se o pacote de driver for assinado pelo WHQL, ele poderá ser distribuído por meio do programa Windows Update ou de outros mecanismos de distribuição com suporte da Microsoft.

Para instalar no Windows 10, 8.1, 8 e 7, seu pacote de driver poderá ter uma única assinatura SHA1.

A partir do Windows 10, você também precisa enviar qualquer novo driver de modo kernel do Windows 10 para assinatura digital no portal do Painel do Windows Hardware Developer Center. Os envios de driver de kernel e de modo de usuário devem ter um Certificado de Assinatura de Código de Validação Estendida ("EV") válido.

** Observação ** A substituição de SHA1 não se aplica a drivers.

Assinatura de um pacote em comparação com a assinatura de um arquivo de driver individual

Um pacote de driver contém vários arquivos. Normalmente, um pacote de driver tem um ou mais arquivos de driver, um arquivo de informações (arquivo INF) e um arquivo de catálogo. O arquivo de catálogo contém informações sobre os outros arquivos no pacote. Quando você assina o arquivo de catálogo, a assinatura no arquivo de catálogo serve como a assinatura para todo o pacote de driver. Em outras palavras, assinar o arquivo de catálogo é o mesmo que assinar o pacote de driver.

Na maioria dos casos, é suficiente assinar o pacote de driver e não é necessário assinar arquivos de driver individuais. Às vezes, no entanto, você precisa assinar o pacote e os arquivos de driver individuais. Por exemplo, os arquivos de driver de inicialização devem ser assinados individualmente. A assinatura de um arquivo de driver individual é conhecida como a inserção de uma assinatura no arquivo de driver.

Suponha que você tenha uma solução do Visual Studio que contenha um projeto de driver chamado MyDriver e um projeto de pacote de driver chamado MyDriver Package. O Visual Studio fornece dois conjuntos de páginas de propriedades: um para My Driver e outro para My Driver Package. Para assinar o pacote de driver, defina as propriedades de Assinatura de Driver de My Driver Package. Para inserir uma assinatura no arquivo de driver individual, defina as propriedades de Assinatura de Driver de My Driver.

Ao definir as propriedades do pacote de driver para assinatura de produção, lembre-se de ajustar as propriedades de assinatura dos arquivos de driver individuais de acordo. Desative a assinatura para os arquivos de driver individuais ou defina os arquivos de driver individuais para usar o mesmo certificado que você especificou para o pacote.

Observação Para ver o hash (também chamado de impressão digital) de um certificado, abra uma janela do Prompt de Comando e navegue até o diretório que contém seu certificado. Insira o comando certutil -dump CertName.pfx, em que CertName.pfx é o nome do seu certificado.