Como Assinar Um Driver Não Assinado No Windows 10 x64
Como Assinar Um Driver Não Assinado No Windows 10 x64
Como Assinar Um Driver Não Assinado No Windows 10 x64
No Windows 10, 8.1 e 7 de 64 bits (x64), há várias maneiras de desativar a verificação de assinatura de
driver para os drivers não assinados: usando uma diretiva de grupo ou um modo de inicialização de teste.
Hoje mostraremos como assinar qualquer driver não assinado para a versão de 64 bits do Windows 10
ou do Windows 7 .
Suponha que você tenha um determinado driver de dispositivo não assinado (sem assinatura digital) para o
Windows 10 x64 ou o Windows 7 x64. Neste exemplo, é o driver da placa gráfica antiga. O arquivo com
drivers para sua versão do Windows foi baixado do site do fornecedor (consegui encontrar a versão do
driver de vídeo para o Windows Vista x64) e seu conteúdo foi extraído para c: \ tools \ drv1 \. Vamos tentar
instalar o driver adicionando-o ao repositório de drivers do Windows com uma ferramenta pnputil padrão:
Pnputil –ac:\tools\drv1\xg20gr.inf
Nota Este comando e todos os próximos devem ser executados no prompt de comando como administrador.
Durante a instalação do driver, o Windows 7 exibe um aviso de que o sistema não pode verificar a assinatura
digital deste driver:
No Windows 10, esse aviso não aparece, mas um aviso é exibido no console:
Conteúdo:
Windows SDK (ou Microsoft Visual Studio 2005 ou posterior) para sua versão do Windows. Esses
pacotes incluem as ferramentas de assinatura do Windows SDK para Desktop, que incluem o
utilitário necessário - signtool.exe ;
Kit de driver do Windows 7.1.0 .
Dica No Windows 10, você pode usar as versões mais recentes do Windows SDK e do Windows Driver Kit.
Antes de instalar essas ferramentas, verifique se o .NET Framework 4 está instalado no seu computador.
Crie um certificado autoassinado e uma chave privada, que é emitida, por exemplo, para a empresa
WinOSHub:
Durante a criação do certificado, a ferramenta solicitará que você especifique uma senha para a chave, seja
ela P @ ss0wrd .
Crie uma chave pública para um certificado de publicador (PKSC) que criamos anteriormente:
Combine a chave pública (.spc) e a chave privada (.pvk) em um único arquivo de certificado com o formato
Personal Information Exchange (.pfx):
Dica Você pode criar um certificado de assinatura de código autoassinado sem usar ferramentas de terceiros
usando o cmdlet do PowerShell 5.0 - New-SelfSifgnedCertificate :
$cert = New-SelfSignedCertificate -Subject "Woshub” -Type CodeSigningCert -
CertStoreLocation cert:\LocalMachine\My
Então você precisa exportar este certificado para o arquivo pfx com a senha:
Nota Embora o certificado tenha um período de validade limitado, a expiração do certificado CodeSigning
significa que você não pode criar novas assinaturas. A validade do driver já assinado por este certificado é
ilimitada (ou as assinaturas antigas são válidas durante o registro de data e hora especificado).
Vá para o diretório:
cd C:\WinDDK\7600.16385.1\bin\selfsign
Gere um arquivo CAT (contém informações sobre todos os arquivos no pacote do driver) na base do arquivo
INF. Na base de um arquivo inf usando a ferramenta inf2cat.exe (incluída no Windows Driver Kit - WDK),
gere um arquivo cat para sua plataforma (ele contém informações sobre todos os arquivos no pacote do
driver):
Para corrigir o erro, localize a linha com DriverVer = na seção [Version] e substitua-a por:
DriverVer=05/01/2009,9.9.9.9
Após o comando ser executado, o arquivo xg20gr.cat deve ser atualizado no diretório dos drivers.
Assinando o driver usando certificado autoassinado
Vá para a seguinte pasta:
Assine o conjunto de arquivos do driver com o certificado que você criou anteriormente usando Globalsign
como um serviço de registro de data e hora. O seguinte comando assinará o arquivo CAT com uma
assinatura digital usando um certificado armazenado em um arquivo PFX, protegido por uma senha:
Dica A assinatura digital do driver está contida no arquivo .cat mencionado no arquivo .inf. Você pode
verificar a assinatura digital do driver no arquivo cat usando o seguinte comando:
O arquivo CAT contém assinaturas digitais (impressões digitais) de todos os arquivos que estão no diretório
do driver (arquivos listados no arquivo INF na seção CopyFiles). Se algum desses arquivos tiver sido
alterado, a soma de verificação dos arquivos não corresponderá aos dados no arquivo CAT e, como
resultado, a instalação desse driver falhará.
Ou faça isso com o assistente de importação de certificados gráficos (você precisa colocar o certificado nos
repositórios de Fornecedores Confiáveis e Autoridades de Certificação Raiz Confiáveis da máquina
local). Em um domínio, você pode distribuir esse certificado para o computador cliente usando a Diretiva de
Grupo .
Nota Você pode verificar se o certificado que criamos está na lista de certificados confiáveis abrindo o snap-
in de gerenciamento de certificados (certmgr.msc) e certificando-se de que nosso certificado (emitido para
nossa empresa) esteja nos armazenamentos correspondentes.
Dica Quando você verifica o armazenamento de certificados com o utilitário Sigcheck , esse certificado será
exibido como não confiável, porque não está listado na lista de certificados raiz da Microsoft (essa lista
precisa ser atualizada periodicamente).
Instalação do driver assinado com o certificado autoassinado
Tente instalar o driver que assinamos novamente usando o comando:
Pnputil –i –a C:\DriverCert\xg20\xg20gr.inf
Agora você não verá o aviso sobre a assinatura digital ausente do driver.
O seguinte aviso aparece no Windows 7 x64: Você gostaria de instalar o software do dispositivo? No
Windows 10 x64 1803, essa janela pop-up não aparece. Ao clicar em " Instalar ", você instala o driver no
sistema.
Se, por algum motivo, o driver não estiver instalado, o log detalhado de instalação do driver estará contido
no arquivo C: \ Windows \ inf \ setupapi.dev.log . Este arquivo de log permite que você obtenha mais
informações sobre os erros de instalação do driver. Na maioria dos casos, há um erro “Validação de
assinatura com falha no pacote do driver” - muito provavelmente, isso significa que o certificado do driver
não foi adicionado ao armazenamento de certificados confiáveis.
Se a instalação do driver foi bem-sucedida, o arquivo setupapi.dev.log deverá conter as seguintes linhas:
Como você pode ver, para instalar o driver auto-assinado, nem precisávamos desativar a verificação de
assinatura digital dos drivers com os comandos bcdedit.exe:
In 64-bit (x64) Windows 10, 8.1 and 7 there are several ways to disable driver signature verification for the
unsigned drivers: using a group policy or a test boot mode. Today we’ll show how to sign any unsigned
driver for the 64-bit version of Windows 10 or Windows 7.
Suppose you have a certain unsigned device driver (without digital signature) for Windows 10 x64 or
Windows 7 x64. In this example, it is the driver for quite old graphics card. The archive with drivers for
your Windows version has been downloaded from the vendor’s website (I was able to find the video driver
version for Windows Vista x64) and its contents has been extracted to c:\tools\drv1\. Let’s try to install the
driver by adding it to Windows driver store with a standard pnputil tool:
Pnputil –a c:\tools\drv1\xg20gr.inf
Note. This command and all the next ones must be run in the command prompt as administrator.
During driver installation, Windows 7 displays a warning that the system can’t verify the digital signature of
this driver:
In Windows 10 this warning doesn’t appear, but a warning appears in the console:
If you right click on the inf driver file and select Install when installing a driver from File Explorer, you
receive an error:
Contents:
Windows SDK (or Microsoft Visual Studio 2005 or later) for your version of Windows. These
packages include Windows SDK Signing tools for Desktop, which includes the necessary utility –
signtool.exe;
Windows Driver Kit 7.1.0.
Tip. In Windows 10 you can use the newer versions of Windows SDK and Windows Driver Kit. Before
installing these tools, make sure that the .NET Framework 4 is installed on your computer.
Create a self-signed certificate and private key, that is issued, for example, for the company WinOSHub:
During the creation of the certificate, the tool will prompt you to specify a password for the key, let it be
P@ss0wrd.
Create a public key for a publisher certificate (PKSC) we have created earlier:
Combine the public key (.spc) and the private key (.pvk) in a single certificate file with format Personal
Information Exchange (.pfx):
Tip. You can create a self-signed Code Signing certificate without using third-party tools by using the
PowerShell 5.0 cmdlet – New-SelfSifgnedCertificate:
Then you need to export this certificate to the pfx file with the password:
Go to the directory:
cd C:\WinDDK\7600.16385.1\bin\selfsign
Generate a CAT file (contains information about all the files in the driver package) on the base of the INF
file. On the base of an inf file using the inf2cat.exe tool (included in the Windows Driver Kit – WDK)
generate a cat file for your platform (it contains information about all files in the driver package):
To make sure that the procedure was correct, check if the log file contains the messages:
and
To fix the error, find the line with DriverVer = in the [Version] section and replace it with:
DriverVer=05/01/2009,9.9.9.9
After the command is executed, the xg20gr.cat file should be updated in the drivers’ directory.
Sign the set of the driver files with the certificate you have created earlier using Globalsign as a timestamp
service. The following command will sign the CAT file with a digital signature using with a certificate
stored in a PFX file, protected by a password:
Tip. The digital signature of the driver is contained in the .cat file referenced in the .inf file. You can check
the digital signature of the driver in the cat file using the following command:
Or do it with the graphical certificate import wizard (you need to place the certificate in the Trusted
Publishers and Trusted Root Certification Authorities stores of the local machine). In a domain, you can
distribute this certificate to client computer using Group Policy.
Note. You can check if the certificate we created is in the list of trusted certificated by opening the
certificate management snap-in (certmgr.msc) and making sure that our certificate (issued for our company)
is in the corresponding stores.
Tip. When you check the certificate store with the Sigcheck utility, this certificate will be displayed as
untrusted, because it is not on the listed in the list of Microsoft root certificates (this list needs to be updated
periodically).
Pnputil –i –a C:\DriverCert\xg20\xg20gr.inf
Now you won’t see the warning about the missing digital signature of the driver.
If for some reason the driver is not installed, the detailed driver installation log is contained in the file
C:\Windows\inf\setupapi.dev.log. This log file allows you to get more information about the driver
installation errors. In most cases, there is a “Driver package failed signature validation” error – most likely
this means that the driver certificate is not added to the trusted certificates store.
If the driver installation was successful, the setupapi.dev.log file should contain the following lines:
As you can see, to install the self-signed driver we did not even have to disable the digital signature
verification of the drivers with the bcdedit.exe commands: