- Как подписать драйвер Windows 10, 8.1 и Windows 7 x64 и x86
- Что потребуется для подписи драйвера
- Процесс самостоятельной подписи драйвера
- Руководство по подписи драйверов Windows
- Обзор
- Подписываем драйвер в Windows 7
- Способ 1: Импорт цифровой подписи
- Способ 2: Ручное создание подписи
- Шаг 1: Предварительные действия
- Шаг 2: Генерация ключа и сертификата
- Шаг 3: Создание конфигурационного файла
- Шаг 4: Создание подписи для драйвера
Как подписать драйвер Windows 10, 8.1 и Windows 7 x64 и x86
Windows 10, 8.1 и Windows 7 позволяют отключить обязательную проверку цифровой подписи драйверов и установить неподписанный драйвер, однако если в последних версиях ОС это нужно сделать на постоянной основе, изменение опций с помощью bcdedit не помогает. Однако, может помочь самостоятельная подпись драйвера и его последующая установка, о чем и поговорим.
В этой инструкции подробно о том, как самостоятельно подписать драйвер для Windows 10, 8.1 или Windows 7 x64 или 32-бит (x86) для последующей установки в системе на постоянной основе без отключения проверки цифровой подписи драйверов, избежав при этом ошибок наподобие «INF стороннего производителя не содержит информации о подписи».
Что потребуется для подписи драйвера
Для того, чтобы выполнить все описанные далее шаги, скачайте и установите следующие инструменты с сайта Майкрософт:
Из первого набора достаточно будет установить Tools, из второго (представляет собой ISO-образ с установщиком, с которого нужно запустить KitSetup.exe) — выбрать Build Environments и Tools.
Обратите внимание: это не последние версии наборов инструментов, но они в равной степени подойдут для самостоятельной подписи драйверов для последующей установки во всех ОС от Windows 10 до Windows 7, при этом в инструкции не потребуется вдаваться в некоторые дополнительные нюансы.
Процесс самостоятельной подписи драйвера
В процессе для того, чтобы подписать драйвер самостоятельно, нам потребуется: создать сертификат, подписать драйвер этим сертификатом, установить сертификат в системе и установить драйвер. Начнем.
- Создайте в корне диска C какую-либо папку (так к ней проще будет обращаться в дальнейшем), например, C:\cert, где мы будем работать с сертификатами и драйверами.
- Запустите командную строку от имени администратора (нужны для 18-го шага). Далее используем следующие команды по порядку. Файлы драйвера пока не потребуются. Во время выполнения второй команды вас попросят ввести пароль, я использую password в окне запроса и далее в командах, вы можете использовать свой.
- До этого этапа всё должно пройти как на скриншоте ниже, командную строку не закрываем.
- В папке C:\cert создайте вложенную папку, например, drv и поместите туда свои файлы драйвера. Но: если вам требуется драйвер только для x64, не копируйте .inf файл для x86 систем в эту папку и наоборот.
В командной строке используем следующие команды:
- В предыдущей команде для драйвера 32-бит укажите X86 вместо X64. Если будет предложено скачать .NET Framework, согласитесь, установите, а затем заново выполните команду. В идеале вы должны будете получить сообщение об успешном создании .cat файла для подписи. Однако, возможны ошибки, о наиболее частых — следующие два пункта. После исправления ошибок повторите команду из пункта 10.
- DriverVer set to incorrect date — возникает при дате в файле драйвера до 21 апреля 2009 года. Решение: откройте файл .inf из папки drv в текстовом редакторе (можно в блокноте) и в строке DriverVer установите другую дату (формат: месяц/день/год).
- Missing AMD64 CatalogFile entry (для 64-бит) или Missing 32-bit CatalogFile entry. Решение: откройте файл .inf из папки drv в текстовом редакторе и в разделе [Version] добавьте строку CatalogFile=catalog.cat
- В итоге вы должны получить сообщение: Catalog generation complete с указанием пути к файлу каталога, в моем случае – C:\cert\drv\catalog.cat. Далее используем следующие команды (требуется подключение к Интернету).
- Результат подписи файла драйвера без ошибок на скриншоте ниже. Следующий шаг — добавить самоподписанный сертификат в список доверенных в системе, сделать это можно следующими двумя командами по порядку
- В результате вы должны получить сообщение «CertMgr Succeeded». Если Failed или certmgr.exe не является внутренней или внешней командой — убедитесь, что командная строка запущена от имени администратора, а вы находитесь в нужной папке (см. 15 шаг).
И вот теперь можно закрыть командную строку и установить драйвер из папки C:\cert\drv с помощью диспетчера устройств, или нажав правой кнопкой по .inf файлу и выбрав пункт «Установить». Потребуется подтвердить установку драйвера в окне «Не удалось проверить издателя этих драйверов» — нажать «Все равно установить этот драйвер».
Обратите внимание, что возможные ошибки в диспетчере устройств, отображаемые для устройства с самостоятельно подписанным драйвером обычно не имеют отношения непосредственно к процессу подписи (та же ошибка для них будет появляться и без подписи, при простом отключении проверки цифровой подписи драйверов в особых вариантах загрузки). Т.е. искать причину в этом случае нужно в чем-то ещё и читать подробную инструкцию по использованию драйвера (например, в случае драйверов для FlashTool).
Руководство по подписи драйверов Windows
В этом руководстве приводятся общие сведения о действиях по подписи двоичных файлов драйверов для Windows в одном объединенном расположении. В следующих подтопиках описан процесс:
Обзор
Начиная с Windows Vista, для загрузки всех программ, работающих в режиме ядра, в том числе драйверов, для загрузки требуется все программное обеспечение на основе x64.
Корпорация Майкрософт предоставляет следующие два способа цифровой подписи драйверов:
- Сертификация драйвера с помощью Корпорации Майкрософт и Майкрософт предоставит для него подпись. Когда пакет драйверов проходит сертификационные тесты, он может быть подписан Windows Hardware Quality Labs (WHQL). Если пакет драйверов подписан WHQL, его можно распространить с помощью программы Центра обновления Windows или других механизмов распространения, поддерживаемых корпорацией Майкрософт.
- Поставщики или разработчики драйверов могут получить сертификат публикации программного обеспечения (SPC) из авторизованного центра сертификации (ЦС) Майкрософт и использовать его для подписывания двоичных файлов в режиме ядра и пользовательского режима.
В случае загрузочных драйверов во время запуска системы драйверы, загруженные системным загрузчиком (Windows Vista и более поздних версий Windows), поставщики должны использовать сертификат издателей программного обеспечения (SPC), чтобы внедрить файл двоичного образа драйвера.
Примечание Обязательная политика подписывания кода в режиме ядра применяется ко всем программному обеспечению в режиме ядра для систем на базе x64, работающих в Windows Vista и более поздних версиях Windows. Однако корпорация Майкрософт рекомендует издателям подписывать все программное обеспечение в режиме ядра, включая драйверы устройств (включенные драйверы пользовательского режима) для 32-разрядных систем. Windows Vista и более поздние версии Windows проверяют подписи в режиме ядра в 32-разрядных системах. Программное обеспечение для поддержки защищенного мультимедийного содержимого должно быть цифровой подписью, даже если это 32-разрядная версия.
Драйверы в пользовательском режиме, например драйвер принтера, будут устанавливаться и работать на компьютере с архитектурой x64. Во время установки появится диалоговое окно с запросом утверждения для установки драйвера. Начиная с Windows 8 и более поздних версий Windows установка не будет продолжена, если эти пакеты драйверов также не подписаны.
Следующие ресурсы описывают более подробные сведения о входе драйвера:
Подписываем драйвер в Windows 7
Перед началом инструкций отметим, что иногда бывает проще отключить проверку цифровых подписей в операционной системе, нежели вручную подписывать драйвер. К тому же есть и альтернативные варианты инсталляции неподписанного ПО, о чем более детально читайте в других руководствах на нашем сайте, воспользовавшись ссылками ниже.
Способ 1: Импорт цифровой подписи
Первый вариант подходит тем пользователям, кто собирается устанавливать его в операционную систему только один раз и не заинтересован в дальнейшем распространении. Этот способ лучше всего использовать в тех ситуациях, когда вы скачали драйвер, но оказалось, что он не подписан и инсталлировать его не получается. Тогда от вас требуется перенести его конфигурацию в Windows 7, что осуществляется так:
- Перейдите в папку с драйвером и отыщите там файл формата INF, который и должен быть установлен в ОС. Щелкните по нему ПКМ, чтобы вызвать контекстное меню.
- Внизу списка выберите пункт «Свойства».
Теперь драйвер считается зарегистрированным. Если инсталляция остальных компонентов должна происходить при помощи исполняемого файла, перейдите в каталог с программным обеспечением и запустите его, чтобы завершить установку.
Способ 2: Ручное создание подписи
Этот способ более сложный, поэтому пришлось даже разделить его на этапы во избежание проблем с пониманием. Его суть заключается в использовании фирменных средств разработчика от Microsoft, чтобы создать подпись для пользовательского драйвера. Особое внимание этому методу стоит уделить тем, кто заинтересован в ручной разработке драйверов.
Шаг 1: Предварительные действия
Компания Майкрософт распространяет все необходимые утилиты в свободном доступе, однако по умолчанию они отсутствуют в Windows 7, поэтому сначала придется заняться их загрузкой и инсталляцией.
- Откройте ссылку выше, чтобы открыть страницу скачивания Microsoft Windows SDK, где нажмите по кнопке «Download».
- Загрузка инсталлятора начнется в автоматическом режиме: ожидайте ее окончания, а затем запустите исполняемый файл.
- При появлении окна контроля учетных записей разрешите внесение изменений.
- Следуйте отобразившейся на экране инструкции и переходите далее.
- По ссылке, ведущей на страницу приложения, загрузите Windows Driver Kit.
Перейти на официальный сайт Microsoft для скачивания Windows Driver Kit 7.1.0
Это целый пакет разных утилит и дополнительных компонентов, распространяющийся в виде ISO-образа. По завершении загрузки вам необходимо смонтировать его через любую удобную программу, о чем читайте по ссылке далее.
Подробнее: Как смонтировать образ в программе DAEMON Tools
Сейчас уже существуют новые версии рассмотренных инструментов, но вам нужно загружать только те сборки, на которые мы оставили ссылки. Связано это с тем, что разработчики в новых версиях прекратили поддержку используемых далее утилит, что не позволит вручную подписать драйвер. Убедитесь в том, что все компоненты установлены, перезагрузите компьютер и переходите далее.
Шаг 2: Генерация ключа и сертификата
Сертификат необходим драйверу для того, чтобы определить его подлинность, а сгенерированные ключи обезопасят сам файл от несанкционированного изменения. Создание таких компонентов — обязательное условие от Microsoft, поэтому каждому пользователю придется выполнить следующие действия:
- Запустите «Командную строку» от имени администратора.
- Введите команду cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\bin , чтобы перейти к папке с объектами SDK. Если вы изменяли директорию при установке, замените путь на актуальный. Активируйте команду нажатием по клавише Enter.
- Задействуйте утилиту, входящую в состав SDK, чтобы сгенерировать сертификат, вписав в консоль команду makecert -r -sv C:\DriverCert\myDrivers.pvk -n CN=»NameCompany» C:\DriverCert\MyDrivers.cer . Замените NameCompany на название изготовителя драйвера или впишите произвольное.
- На экране отобразится форма для создания пароля к закрытому ключу, а от вас требуется ввести его в соответствующем поле и подтвердить.
- Для продолжения работы в новом окне введите уже присвоенный пароль.
- После автоматического закрытия окна ознакомьтесь с содержимым консоли: если в конце вы видите уведомление «Succeeded», значит, генерация прошла удачно и можно двигаться далее.
- Следующий обязательный этап заключается в создании публичного ключа, и он будет доступен всем желающим внедрить драйвер в программное обеспечение. Для этого вставьте команду cert2spc C:\DriverCert\myDrivers.cer C:\DriverCert\myDrivers.spc .
- Сообщение в консоли должно свидетельствовать об успешном создании публичного ключа.
- Закрытый и публичный ключ должны быть объединены в один компонент, а для этого используется команда pvk2pfx -pvk C:\DriverCert\myDrivers.pvk -pi P@ss0wrd -spc C:\DriverCert\myDrivers.spc -pfx C:\DriverCert\myDrivers.pfx -po PASSWORD . Замените PASSWORD на ранее созданный пароль закрытого ключа.
Это был самый простой этап создания цифровой подписи для драйвера, в ходе которого практически никогда не возникает никаких ошибок. Однако если на экране отобразились какие-то предупреждающие уведомления, не игнорируйте их, читайте содержимое и исправляйте ситуацию в соответствии с находящимися там рекомендациями.
Шаг 3: Создание конфигурационного файла
Конфигурационный файл необходим каждому драйверу, ведь именно в нем и будут храниться основные сведения. В дальнейшем он может пригодиться, если, например, понадобится изменить дату последнего изменения или внести коррективы в название версии драйвера. Сначала понадобится обратиться в заранее созданную папку «DriverCert», куда перенесите файлы драйвера, для которого и создается подпись, выделив для них отдельный подкаталог. После запустите консоль и выполните такие действия:
- Для использования следующей утилиты снова придется переместиться в папку с набором инструментов от Майкрософт, а для этого задействуйте команду cd C:\WinDDK\7600.16385.1\bin\selfsign .
- Предварительно откройте каталог с драйвером и убедитесь, что там есть два файла с расширениями INF и SYS, ведь они будут задействованы для следующего формирования конфигурационного файла. После введите inf2cat.exe /driver:»C:\DriverCert\DRIVER» /os:7_X64 /verbose , заменив DRIVER на название ранее созданной папки с файлами. Подтвердите выполнение команды нажатием на Enter.
Следите за состоянием «Командной строки» и ожидайте появления на экране уведомлений «Signability test complete» и «Catalog generation complete». Во время процедуры создания файла настоятельно не рекомендуется выполнять других действий на компьютере, поскольку это может вызвать сбои в функционировании утилиты.
Отдельно отметим самую частую ошибку, которая появляется при создании конфигурационного файла. Ее текст выглядит примерно так: «22.9.7: DriverVer set to incorrect date (must be postdated to 4/21/2009 for newest OS) in \XXXXX.inf», а вызывает ее некорректно установленная дата создания объекта. Если такая проблема возникла, откройте целевой файл, имя которого и указано в ошибке, через стандартный «Блокнот», где отыщите строку «DriverVer=» и поменяйте ее значение на 05/01/2009,9.9.9.9 . Сохраните изменения и повторно выполните создание конфигурационного файла.
Шаг 4: Создание подписи для драйвера
Когда все предыдущие этапы завершены, остается только подписать сам драйвер, что выполняется при помощи добавленных ранее средств разработчика через уже привычную Командную строку.
- Откройте консоль от имени администратора и напишите команду cd «C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64» .
- Далее вставьте содержимое signtool sign /f C:\DriverCert\myDrivers.pfx /p PASSWORD /t http://timestamp.globalsign.com/scripts/timstamp.dll /v «C:\DriverCert\xg\xg20gr.cat» , заменив PASSWORD на пароль закрытого ключа, который создавался ранее. Во время данной операции будет задействован онлайн-сервис Globalsign, отвечающий за установку штампа времени, поэтому убедитесь в наличии подключения к интернету. Появившаяся в консоли строка Successfully signed: C:\DriverCert\xg\xg20gr.cat Number of files successfully Signed: 1 уведомит об успешном завершении процесса.
- По очереди вставьте две команды ниже, устанавливающие сертификат.
certmgr.exe -add C:\DriverCert\myDrivers.cer -s -r localMachine ROOT
certmgr.exe -add C:\DriverCert\myDrivers.cer -s -r localMachine TRUSTEDPUBLISHER
Следуйте отобразившимся в графическом меню инструкциям, чтобы завершить подпись. На этом процесс считается оконченным, а подписанный драйвер остается только вручную установить, если это требуется.