1000+ инструкций в блоге SoftComputers
0 0 голоса
Рейтинг

В 64-битных версиях Windows установка неподписанных драйверов запрещена по умолчанию, так как операционная система требует наличия цифровой подписи для подтверждения их подлинности и безопасности. Неподписанные драйверы блокируются, чтобы предотвратить установку потенциально опасного кода. В этой статье мы подробно разберем, как подписать драйвер с помощью самоподписанного сертификата для Windows 11, Windows 10, Windows 8.1 и Windows 7. Вы узнаете, как создать сертификат, сгенерировать CAT-файл, подписать драйвер и установить его, а также как обойти ограничения для kernel-mode драйверов при включенном Secure Boot.

Приобрести оригинальные ключи активации Windows 11 можно у нас в каталоге от 1690

Почему требуется подпись драйверов

Цифровая подпись подтверждает, что драйвер разработан доверенным издателем и не был изменен. Без подписи Windows блокирует установку, выдавая ошибки, такие как:

— В Windows 7: «Windows не может проверить издателя этого драйвера»

— В Windows 10/11: «INF стороннего производителя не содержит информации о подписи»

Для примера мы будем подписывать драйвер для старого графического адаптера, распакованный в каталог C:\tools\drv1 (файлы xg20gr.inf и xg20gr.sys). Попытка установить его через команду:

pnputil -a "C:\tools\drv1\xg20gr.inf"

вызовет ошибку из-за отсутствия подписи. Рассмотрим процесс создания и применения самоподписанного сертификата.

Такая же ошибка появляется при установке драйвера из проводника Windows (щелкните ПКМ по inf файлу драйвера и выберите Install / Установить):

Подготовка инструментов

Для подписи драйвера потребуются следующие инструменты:

Windows SDK (или Microsoft Visual Studio версии 2005 и выше), включающий утилиту signtool.exe

Windows Driver Kit (WDK), содержащий утилиту inf2cat.exe

Скачайте их для вашей версии Windows с официального сайта Microsoft.

Создание самоподписанного сертификата

Создайте каталог для сертификатов: C:\DriverCert.

Создание сертификата через PowerShell

Для современных версий Windows используйте PowerShell для создания сертификата типа Code Signing:

1. Откройте PowerShell с правами администратора

2. Выполните команды для создания сертификата со сроком действия 3 года:


$todaydate = Get-Date
$add3year = $todaydate.AddYears(3)
$cert = New-SelfSignedCertificate -Subject "MyDriverCert" -Type CodeSigningCert -CertStoreLocation cert:\LocalMachine\My -notafter $add3year

3. Экспортируйте сертификат в файл .pfx с паролем:


$CertPassword = ConvertTo-SecureString -String "P@ssw0rd" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath C:\DriverCert\myDrivers.pfx -Password $CertPassword

4. Добавьте сертификат в хранилища доверенных сертификатов:


$certFile = Export-Certificate -Cert $cert -FilePath C:\DriverCert\drivecert.cer
Import-Certificate -CertStoreLocation Cert:\LocalMachine\AuthRoot -FilePath $certFile.FullName
Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath $certFile.FullName

Создание сертификата через makecert (для старых версий Windows)

Если PowerShell недоступен, используйте утилиту makecert.exe из Windows SDK:

1. Перейдите в каталог SDK:

cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\bin"

2. Создайте сертификат:

makecert -r -sv C:\DriverCert\myDrivers.pvk -n CN="MyDriverCert" C:\DriverCert\myDrivers.cer

3. Укажите пароль (например, P@ssw0rd)

4. Создайте публичный ключ:

cert2spc C:\DriverCert\myDrivers.cer C:\DriverCert\myDrivers.spc

5. Объедините ключи в .pfx файл:

pvk2pfx -pvk C:\DriverCert\myDrivers.pvk -pi P@ssw0rd -spc C:\DriverCert\myDrivers.spc -pfx C:\DriverCert\myDrivers.pfx -po P@ssw0rd

6. Добавьте сертификат в доверенные хранилища:


certmgr.exe -add C:\DriverCert\myDrivers.cer -s -r localMachine ROOT
certmgr.exe -add C:\DriverCert\myDrivers.cer -s -r localMachine TRUSTEDPUBLISHER

Для доменных сред распространите сертификат через групповые политики. Проверьте его наличие в хранилищах Trusted Root Certification Authorities и Trusted Publishers через консоль certlm.msc.

Примечание: Срок действия сертификата не влияет на уже подписанные драйверы, но для новых подписей потребуется действующий сертификат.

Генерация CAT-файла драйвера

CAT-файл содержит информацию о файлах драйвера и их цифровые подписи. Выполните следующие шаги:

1. Создайте каталог C:\DriverCert\xg и скопируйте в него файлы драйвера:

md C:\DriverCert\xg
xcopy C:\tools\drv1\ C:\DriverCert\xg /i /c /k /e /r /y

2. Перейдите в каталог WDK:

cd "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86"

3. Сгенерируйте CAT-файл с помощью inf2cat.exe:

inf2cat.exe /driver:"C:\DriverCert\xg" /os:7_X64 /verbose

4. Убедитесь, что файл C:\DriverCert\xg\xg20gr.cat создан, и в логе есть сообщения:

— Signability test complete

— Catalog generation complete

Устранение ошибок inf2cat

— Ошибка: «DriverVer set to incorrect date»

В файле xg20gr.inf в секции [Version] измените строку DriverVer на:

DriverVer=05/01/2009,9.9.9.9

— Ошибка: «Missing AMD64 CatalogFile entry»

Добавьте в секцию [Version] файла .inf:

CatalogFile=xg20gr.cat

Подпись драйвера

Перейдите в каталог с signtool.exe:

cd "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64"

Подпишите CAT-файл, используя сервер временных меток (например, DigiCert):

signtool sign /tr http://timestamp.digicert.com /td SHA256 /v /f C:\DriverCert\myDrivers.pfx /p P@ssw0rd "C:\DriverCert\xg\xg20gr.cat"

Если возникает ошибка, попробуйте другие серверы временных меток:

http://timestamp.verisign.com/scripts/timstamp.dll

http://timestamp.globalsign.com/scripts/timstamp.dll

http://timestamp.comodoca.com/authenticode

http://www.startssl.com/timestamp

http://tsa.starfieldtech.com

При успешной подписи появится сообщение:

Successfully signed: C:\DriverCert\xg\xg20gr.cat

Проверьте подпись:

signtool verify /v /pa C:\DriverCert\xg\xg20gr.cat

Если сертификат не добавлен в доверенные хранилища, появится ошибка:

«A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.»

Установка подписанного драйвера

Установите драйвер командой:

pnputil -i -a C:\DriverCert\xg\xg20gr.inf

В Windows 10/11 появится запрос на подтверждение установки. Нажмите «Установить». При успешной установке в логе C:\Windows\inf\setupapi.dev.log появятся строки:


>>> [Device Install (DiInstallDriver) - C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf] >>> Section start 2018/07/22 23:32:57.015
inf: {SetupCopyOEMInf: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf} 23:32:57.046
inf: Published Inf Path: C:\WINDOWS\INF\oem23.inf
inf: {SetupCopyOEMInf exit (0x00000000)} 23:32:57.077
<<< Section end 2018/07/22 23:32:57.155 <<< [Exit status: SUCCESS]

Если установка не удалась, проверьте лог setupapi.dev.log. Ошибка «Driver package failed signature validation» указывает на отсутствие сертификата в доверенных хранилищах.

Особенности kernel-mode и user-mode драйверов

— User-mode драйверы (например, для принтеров или сканеров) работают с самоподписанными сертификатами даже при включенном Secure Boot

— Kernel-mode драйверы требуют сертификации через Windows Hardware Quality Labs (WHQL) для работы с Secure Boot. Самоподписанные kernel-mode драйверы блокируются с ошибкой:

Event ID: 7000, ERROR_DRIVER_BLOCKED

Проверьте состояние Secure Boot:

Confirm-SecureBootUEFI

Для установки kernel-mode драйверов отключите проверку подписи:


bcdedit.exe /set nointegritychecks on
bcdedit.exe /set testsigning on

После этого перезагрузите систему в тестовом режиме.

Рекомендации

— Убедитесь, что сертификат добавлен в хранилища Trusted Root Certification Authorities и Trusted Publishers

— Используйте актуальный сервер временных меток для подписи

— Для kernel-mode драйверов рассмотрите сертификацию через WHQL, если требуется поддержка Secure Boot

— Регулярно обновляйте список корневых сертификатов Microsoft для проверки подписей

Подпись драйвера с помощью самоподписанного сертификата позволяет установить неподписанные драйверы в Windows, обходя ограничения системы. Процесс включает создание сертификата, генерацию CAT-файла, подпись драйвера и его установку. Для kernel-mode драйверов при включенном Secure Boot потребуется тестовый режим или сертификация WHQL. Следуя этим шагам, вы сможете успешно установить даже устаревшие драйверы на современных версиях Windows.

author avatar
copywriter
banner for Windows
Лицензионный ключ активации Windows от
0
0 0 голоса
Рейтинг
Подписаться
Уведомить о
guest
     
0 отзывов
72
Межтекстовые Отзывы
Посмотреть все комментарии