Как подписать драйвер
По умолчанию все последние версии Windows запрещают устанавливать драйверы устройств, которые не подписаны действительной цифровой подписью. Такие драйверы блокируются системой. Цифровая подпись гарантирует (в некоторой степени), что драйвер был выпущен определенным разработчиком или поставщиком, и его код не был изменен после того, как он был подписан.
Проще говоря, если драйвер подписан, то компьютер считает, что он не менялся после того как его сделали разработчики соответствующего оборудования, и что никакие злые хакеры не вписали в драйвер вредоносный код, который мог бы украсть Ваши пароли или ещё чего плохого натворить.
Как подписать драйвер для работы устройств на Windows 10 или Windows 7
Разных причин отсутствия подписи много, и раз Вы это читаете, то скорее всего столкнулись с одной из таких причин. В этом примере попробуем установить довольно старый драйвер для звуковой карты, для которого уже истек срок активности сертификата. Архив с драйверами был загружен с веб-сайта производителя ноутбуков, укомплектованных соответствующей видеокартой (нам удалось найти версию драйвера для Windows XP). Чтоб было удобнее работать с драйвером, он был перемещён в специально созданную под него папку: c:\drv\ (папка с названием “drv” на диске “C”). Пробуем установить драйвер путем добавления его через консоль в хранилище драйверов, с помощью стандартного инструмента pnputil:
Pnputil –a c:\drv\HDALC2.inf
Для этого впишите “cmd.exe” в поисковой строке рядом с кнопкой “Пуск” и нажмите “Запустить от имени администратора”. Если у Вас на этом этапе открывается окно с предупреждением, нажмите “Да”.
Можете или скопировать адрес из примера и вставить в консоль нажатием правой кнопки мышки, или ввести вручную. Только не забудьте поменять название файла драйвера из примера на название файла Вашего драйвера, а также поменять адрес, если Вы распаковали драйвер в другую папку.
Ожидаемо, получаем ошибку, указывающую на то, что в INF-файле не удаётся обнаружить информацию о цифровой подписи.
То же сообщение мы получим если попробуем нажать на файле драйвера ПКМ и выбрать “Установить”.
Настало время попробовать подписать драйвер свежесозданным сертификатом.
Необходимые инструменты
Чтобы сгенерировать подпись и подписать драйвер, вам необходимо загрузить и установить следующие инструменты разработки приложений (с настройками по умолчанию):
- .NET Framework 4 — нужен для работы нижеуказанных инструментов;
- Windows SDK (можно не скачивать, если у Вас есть Visual Studio 2005 или новее) для вашей версии Windows. В комплект входит набор инструментов для подписания, в котором и находится нужное средство — signtool.exe;
- WDK 7.1.0.
Создание самоподписанного сертификата и приватного ключа
- Создайте папку “DrvCert” на диске “C”
- Вернитесь в консоль и введите cd C:\Program Files (x86)\Windows Kits\10\bin\x64\
- Создайте самоподписанный сертификат командой makecert -r -sv C:\DrvCert\myDrivers.pvk -n CN=»Company» C:\DrvCert\myDrivers.cer , — где вместо «Company» можно ввести любое другое название условной компании, для которой издается сертификат. В процессе Вам нужно будет задать пароль. Возьмём для примера “0rPr0RpR”.
- Создайте публичный ключ командой cert2spc C:\DrvCert\myDrivers.cer C:\DrvCert\myDrivers.spc
- Совместите публичный и приватный ключи в сертификате с форматом .pfx с помощью команды pvk2pfx -pvk C:\DrvCert\myDrivers.pvk -pi 0rPr0RpR -spc C:\DrvCert\myDrivers.spc -pfx C:\DrvCert\myDrivers.pfx -po 0rPr0RpR — где в конце тот пароль, который Вы вводили ранее.
Создание Файла Каталога
- Теперь нужно создать папку C:\DrvCert\hda и скопировать в неё все файлы из папки, в которую первоначально был извлечен драйвер из архива (c:\drv\). Среди этих файлов обязательно должны быть файлы форматов .sys и .inf (в примере: RTKHDAUD.sys и HDALC2.inf).
- Вернитесь в консоль и введите cd C:\WinDDK\7600.16385.1\bin\selfsign
- Создайте файл CAT (в нём находится информация о расположении файлов в пакете драйвера) на основе файла INF с помощью средства inf2cat.exe (входит в комплект WDK). Для этого запустите следующую команду: inf2cat.exe /driver:»C:\DrvCert\hda» /os:7_X86 /verbose .
Подписание драйвера
- Введите cd C:\Program Files (x86)\Windows Kits\10\bin\x64\
- Теперь набор файлов драйверов нужно подписать сертификатом, который вы создали ранее, используя службу Globalsign.
Следующая команда подпишет файл CAT цифровой подписью, используя сертификат, хранящийся в файле PFX, защищенный введенным ранее паролем: signtool sign /f C:\DrvCert\myDrivers.pfx /p 0rPr0RpR /t http://timestamp.verisign.com/scripts/timstamp.dll /v C:\DrvCert\hda\hda32.cat , где в конце — название .cat файла который появился в папке
Если всё прошло успешно то появится сообщение:
Successfully signed: C:\DrvCert\xg\HDALC2.cat
Установка самоподписанного сертификата
Поскольку созданный только-что сертификат является самоподписанным, по умолчанию система ему не доверяет. Добавьте свой сертификат в хранилище сертификатов локального компьютера:
certmgr.exe -add C:\DrvCert\myDrivers.cer -s -r localMachine ROOT
certmgr.exe -add C:\DrvCert\myDrivers.cer -s -r localMachine TRUSTEDPUBLISHER
Установка драйвера
Вводим команду: Pnputil –i –a C:\DrvCert\hda\HDALC2.inf
Теперь ошибка как при первой попытке не появляется, а вместо неё видим сообщение об успешной установке драйвера.
Поздравляем с успешной установкой!
Можно было и избежать мороки с массой команд и установить драйвер с помощью отключения проверки сертификата, но об этом уже в другой статье.
Установка драйверов без цифровой подписи
Цифровая подпись драйвера используется Microsoft для идентификации производителя и подтверждения соответствия продукта требованиям операционной системы. Наличие такого электронного сертификата гарантирует отсутствие в нем изменений, внесенных после выпуска. Таким образом, пользователь получает двойную гарантию безопасности и может быть уверен в работоспособности полученного драйвера.
Проверка подписей
Windows выполняет проверку цифрового сертификата автоматически. Обнаружив его отсутствие, система выдает пользователю предупреждение об опасности установки неподписанного драйвера. Для проверки уже инсталлированных в ОС компонентов можно использовать встроенные инструменты.
Direct X
Драйверы мультимедиа ‒ наиболее часто обновляемые компоненты ОС. Проверить их на наличие сертификата можно с помощью встроенного средства диагностики. Запускаем его командой, показанной на скриншоте.
На основной вкладке ставим галочку в отмеченном поле. Таким образом мы включим автоматическую проверку утилитой сертификатов соответствия.
Переключившись на следующую вкладку, в поле «Драйверы» мы видим положительный ответ системы.
Аналогичным образом проверяем остальные страницы, убеждаясь в наличии сертификата WHQL.
Signature Verification
Выявить наличие в системе всех компонентов без цифровой подписи можно, используя специальную утилиту проверки. Запустим ее, набрав в текстовом поле «sigverif».
Нажимаем отмеченную кнопку для активации процедуры тестирования компонентов.
Завершение верификации несколько изменит вид основного окна утилиты. Нажимаем на выделенную кнопку, чтобы открыть дополнительные параметры.
Выбираем опцию «Просмотр журнала».
В текстовом редакторе запускается отчет о состоянии установленных в системе драйверов. Обозначенная колонка «Состояние» дает информацию о наличии цифрового сертификата WHQL.
Разобравшись с текущим состоянием системы, рассмотрим, как выполнить отключение проверки цифровой подписи драйверов в Windows 10.
Отключение подписи
Поддерживая стабильность ОС, Microsoft не рекомендует устанавливать компоненты, не имеющие сертификатов WHQL, но такая возможность в системе осталась. Необходимость установить неподписанный драйвер может возникнуть по разным причинам. К примеру, это может быть оборудование, снятое с производства, но необходимое для работы.
Групповая политика
Самый простой способ отключить электронную подпись заключается в изменении политики безопасности. Запускаем редактор, используя меню «Выполнить».
В главном окне последовательно разворачиваем подчеркнутые пункты в области навигации. Последний раздел содержит три параметра. Нужный нам выделен рамкой. Открываем его для редактирования.
В управляющем блоке ставим переключатель в положение «Включено». В области параметров используем выпадающее меню. Выбираем пункт, отмеченный цифрой «2». Применяем и сохраняем внесенные изменения.
Заданное правило должно начать действовать без перезагрузки.
Особые параметры загрузки
Следующий способ предполагает использование особых вариантов загрузки операционной системы. Открываем меню параметров Windows и переходим в указанный на скриншоте раздел.
В области навигации перемещаемся к пункту «Восстановление». Используем отмеченную кнопку для перезагрузки системы.
Управление мышью тут доступно, поэтому последовательно начинаем перемещаться по меню. Открываем раздел устранения неисправностей.
Выбираем дополнительные параметры.
Переходим к настройкам загрузки.
Эта область информационная и работает в ней только отмеченная кнопка.
Система переходит в режим низкого разрешения экрана и отключает управление мышью. Нужный нам пункт седьмой в списке. Выбираем его, нажимая управляющую клавишу «F7» в верхнем ряду клавиатуры.
Компьютер перезагрузится, после чего установка неподписанных драйверов в ОС станет доступна.
Режим командной строки
С помощью этого метода можно также отключить проверку цифровой подписи драйвера в Windows 7. Запускаем PowerShell в режиме повышенных прав. Вводим последовательно приведенные на скриншоте команды.
После перезагрузки система не будет сообщать, что ей требуется драйвер с цифровой подписью. Для отключения режима в тексте последней команды указываем «OFF» вместо «ON».
Еще один вариант использования командной строки требует перезагрузки в безопасный режим. Последовательность действий мы уже рассматривали. Добравшись до дополнительных параметров, выбираем обозначенный пункт.
Операционная система еще раз перезагрузится, отобразив командную строку в режиме администратора. Вводим приведенную на скриншоте команду. Для выхода в графическое меню набираем «exit».
Отключение данного режима также выполняется заменой «ON» на «OFF» в конце управляющей команды.
Создание цифровой подписи
В некоторых случаях описанные методы могут не помочь. Когда не отключается проверка подписи драйверов Windows 7 или 10, придется подписать его самостоятельно. Для этой цели нам понадобится распаковать установочный пакет и найти файл с расширением INF. В нем содержится необходимая для инсталляции в системе информация. Найдя нужный файл, вызываем его свойства и переходим на вкладку «Безопасность». Копируем путь, указанный в поле «Имя объекта».
Запускаем PowerShell с повышенными правами. Вводим следующую команду: «pnputil -a C:\path\name.inf». Заменяем в ней строку «C:\path\name.inf» на скопированный путь к файлу.
В результате ее выполнения выбранный драйвер будет зарегистрирован в системе. Этот же способ подойдет и в том случае, когда постоянно слетает цифровая подпись драйвера.
В заключение
Как мы убедились, существует несколько вариантов установки необходимых компонентов без электронного сертификата WHQL. Действия несложные и могут быть выполнены любым пользователем. Тем не менее, установка неподписанного драйвера не должна быть нормой. Поскольку он не тестировался Microsoft, компания не будет нести ответственность за последствия его установки, а пользователь имеет высокие шансы столкнуться с ошибками BSOD.