Как известно в х64 битных платформах была введена процедура обязательной цифровой подписи всего того, что может попасть в ядро системы, а именно драйверов. О том, на сколько это эффективно и оправданно можно долго спорить, но только одно можно сказать точно — гимора разработчикам тут определенно добавилась, особенно тем, кто раньше никогда подписями не занимался. Также для многих стало крайне не очевидно, каким образом разрабатывать драйвер, когда нет на руках валидного сертификата, а тестировать ведь как-то надо. Вот сча я попытаюсь в краткой и доступной форме рассказать о том как это все делается.
Итак, прежде всего, я бы хотел выделить два типа сертификатов, которые я буду рассматривать в рамках данной статьи — тестовый и настоящий. Разница состоит в том, что настоящий сертификат подписан доверенным CA (Certification Authorities — доверенный издатель), типа VeriSign, GlobalSign ну или самим Microsoft, а тестовый подписан самопальным сертификатом типа от Васи Пупкина.
Тестовый сертификат
Как вы уже наверное догадались, именно с помощью этого типа сертификата можно спокойно разрабатывать драйвер, не имея на руках настоящего, но все не так просто, прежде чем его использовать надо проделать некоторые унылые и мудреные мероприятия:
- Сгенерить сам сертификат и установить его. Это можно сделать с помощью тулзы makecert
, например так:Makecert -r -pe -ss PrivateCertStore -n "CN=TestCertforWDK" TestCert.cerгде
PrivateCertStore
— название хранилищаTestCertforWDK
— название самого сертификатаTestCert.cer
— имя файла с сертификатом(эта тулза входит в комплект WDK 6000/6001 и расположена bin/SelfSign, в WDK 7600 она почему то не входит.)
- Добавить этот сертификат в хранилище с доверенным корневыми CA. Открываем в mmc консоль Сертификаты (Run->mmc->File->Add/Remove Snap-in->Certificates) там находим свой сертификат (например в хранилище PrivateCertStore), копируем его в доверенные корневые издатели (Trusted Root Certification Authorities).
- Разрешить тестовые подписи. Для этого прописываем в администраторской консоли:
bcdedit.exe –set TESTSIGNING ONи перезагружаемся, в итоге на десктопе, после перезагрузки, по углам красоваться соответствующие надписи.

Подпись драйвера
Процесс подписи для тестового и настоящего сертификата во многом похожи, различия состоят лиш в том, что:
- для тествой подписи не нужен кросс-сертификат
- для тествой подписи можно не делать таймстамп
- Качаем тулзу для подписи — signtool
(тоже входит в комплект WDK6000/6001) - Подписываем, с тестовым сертификатом:
signtool sign /v /s PrivateCertStore /n "TestCertforWDK" driver.sysгде
PrivateCertStore
— имя хранилищаTestCertforWDK
— имя тестового сертификатаdriver.sys
— имя драйверас настоящим сертификатом:
signtool sign /v /ac MSCV-GlobalSign.cer /s PrivateCertStore /n "YourTrueCertName" /t http://timestamp.globalsign.com/scripts/timstamp.dll driver.sysгде
MSCV-GlobalSign.cer
— имя кросс-сертификатаYourTrueCertName
— имя настоящего сертификатаtimestamp.globalsign.com/scripts/timstamp.dll
— адрес таймстампингового центра, в моем случае global sign
Далее драйвер можно установить программно с помощью специальных АПИ либо с помощью замечательной тулзы KmdManager
.
Подпись пакета драйверов
В реальной жизни подписи самого драйвера оказывается недостаточно, дело в том, что драйвера устройств как правило поставляются в комплекте с inf-файлом, в котором содержится информация о драйвере и устройствах которые он обслуживает. В этом случае необходимо будет сгенерить cat-файл, который содержит в себе инфу о всех файлах пакета, а потом подписать его точно также, как подписывали драйвер.
Для генерации cat-файла и его подписи нам понадобится:
- Корректный inf-файл (запасайтесь бубнами ребятки)
- Тулза которая генерит этот cat-файл из inf-файлов — inf2cat
(эта тулза входит в комплект WDK6001/7600, и написана, как не странно, на . NET) - После чего генерим cat-файл, например так
inf2cat.exe /driver:release\amd64 /os:Vista_x64,Server2003_x64,Server2008_x64где
release\amd64
— папка в которой находится inf-файл и драйверыVista_x64,Server2003_x64,Server2008_x64
— список ОС, на которых должен работать драйвер - Подписываем его точно также, как и драйвер
signtool sign /v /ac MSCV-GlobalSign.cer /s PrivateCertStore /n "YourTrueCertName" /t http://timestamp.globalsign.com/scripts/timstamp.dll catalog.catсам драйвер при этом подписывать не обязательно.
- Проверяем, что все хорошо подписалось, для этого открываем свойство .cat файла (или драйвера) и смотрим вкладку Digital Signatures — если есть то можем полюбоваться на результат, если нет, то где-то накосячили.
Также более достоверно можно проверить с помощью командной строки
signtool verify /pa /v /c catalog.cat
- Вбиваем в Inf Dir путь к папке где лежит сам .inf файл и все необходимые файлы к нему прилагающиеся.
- Выбираем ОСи где работает драйвер.
- Cross Cert — указываем путь к кросс-сертификату, если нужно подписать драйвер по-настоящему
- Cert Store — названия хранилища, где лежит наш сертификат (например PrivateCertStore)
- Cert Name — название сертификата (например TestCertforWDK), если сертификат один в хранилище, то можно и не заполнять это поле.
- Time Stamp — адрес таймстампингового центра, для тестового сертификата — можно оставить пустым
- Файлы которые надо подписать, тут нужно обязательно добавить cat файл (если еще не создан, то прописать его имя вручную), а также можно добавить все файлы драйверов
- Generate Catalog Only — если подписывать не надо, а только создать .cat файл
- Жмем Sign — чтобы создать cat-файл и подписать, жмем Log — чтобы почитать что произошло, часто бывают ошибки, например неправильно составлен inf-файл, либо signtool чего-то не нашел и т.п.
Литература по теме
http://msdn.microsoft.com/en-us/library/ff544865(VS.85).aspx
Как известно в х64 битных платформах была введена процедура обязательной цифровой подписи всего того, что может попасть в ядро системы, а именно драйверов. О том, на сколько это эффективно и оправданно можно долго спорить, но только одно можно сказать точно — гимора разработчикам тут определенно добавилась, особенно тем, кто раньше никогда подписями не занимался. Также для многих стало крайне не очевидно, каким образом разрабатывать драйвер, когда нет на руках валидного сертификата, а тестировать ведь как-то надо. Вот сча я попытаюсь в краткой и доступной форме рассказать о том как это все делается.
Итак, прежде всего, я бы хотел выделить два типа сертификатов, которые я буду рассматривать в рамках данной статьи — тестовый и настоящий. Разница состоит в том, что настоящий сертификат подписан доверенным CA (Certification Authorities — доверенный издатель), типа VeriSign, GlobalSign ну или самим Microsoft, а тестовый подписан самопальным сертификатом типа от Васи Пупкина.
Тестовый сертификат
Как вы уже наверное догадались, именно с помощью этого типа сертификата можно спокойно разрабатывать драйвер, не имея на руках настоящего, но все не так просто, прежде чем его использовать надо проделать некоторые унылые и мудреные мероприятия:
- Сгенерить сам сертификат и установить его. Это можно сделать с помощью тулзы makecert
, например так:Makecert -r -pe -ss PrivateCertStore -n "CN=TestCertforWDK" TestCert.cerгде
PrivateCertStore
— название хранилищаTestCertforWDK
— название самого сертификатаTestCert.cer
— имя файла с сертификатом(эта тулза входит в комплект WDK 6000/6001 и расположена bin/SelfSign, в WDK 7600 она почему то не входит.)
- Добавить этот сертификат в хранилище с доверенным корневыми CA. Открываем в mmc консоль Сертификаты (Run->mmc->File->Add/Remove Snap-in->Certificates) там находим свой сертификат (например в хранилище PrivateCertStore), копируем его в доверенные корневые издатели (Trusted Root Certification Authorities).
- Разрешить тестовые подписи. Для этого прописываем в администраторской консоли:
bcdedit.exe –set TESTSIGNING ONи перезагружаемся, в итоге на десктопе, после перезагрузки, по углам красоваться соответствующие надписи.

Подпись драйвера
Процесс подписи для тестового и настоящего сертификата во многом похожи, различия состоят лиш в том, что:
- для тествой подписи не нужен кросс-сертификат
- для тествой подписи можно не делать таймстамп
- Качаем тулзу для подписи — signtool
(тоже входит в комплект WDK6000/6001) - Подписываем, с тестовым сертификатом:
signtool sign /v /s PrivateCertStore /n "TestCertforWDK" driver.sysгде
PrivateCertStore
— имя хранилищаTestCertforWDK
— имя тестового сертификатаdriver.sys
— имя драйверас настоящим сертификатом:
signtool sign /v /ac MSCV-GlobalSign.cer /s PrivateCertStore /n "YourTrueCertName" /t http://timestamp.globalsign.com/scripts/timstamp.dll driver.sysгде
MSCV-GlobalSign.cer
— имя кросс-сертификатаYourTrueCertName
— имя настоящего сертификатаtimestamp.globalsign.com/scripts/timstamp.dll
— адрес таймстампингового центра, в моем случае global sign
Далее драйвер можно установить программно с помощью специальных АПИ либо с помощью замечательной тулзы KmdManager
.
Подпись пакета драйверов
В реальной жизни подписи самого драйвера оказывается недостаточно, дело в том, что драйвера устройств как правило поставляются в комплекте с inf-файлом, в котором содержится информация о драйвере и устройствах которые он обслуживает. В этом случае необходимо будет сгенерить cat-файл, который содержит в себе инфу о всех файлах пакета, а потом подписать его точно также, как подписывали драйвер.
Для генерации cat-файла и его подписи нам понадобится:
- Корректный inf-файл (запасайтесь бубнами ребятки)
- Тулза которая генерит этот cat-файл из inf-файлов — inf2cat
(эта тулза входит в комплект WDK6001/7600, и написана, как не странно, на . NET) - После чего генерим cat-файл, например так
inf2cat.exe /driver:release\amd64 /os:Vista_x64,Server2003_x64,Server2008_x64где
release\amd64
— папка в которой находится inf-файл и драйверыVista_x64,Server2003_x64,Server2008_x64
— список ОС, на которых должен работать драйвер - Подписываем его точно также, как и драйвер
signtool sign /v /ac MSCV-GlobalSign.cer /s PrivateCertStore /n "YourTrueCertName" /t http://timestamp.globalsign.com/scripts/timstamp.dll catalog.catсам драйвер при этом подписывать не обязательно.
- Проверяем, что все хорошо подписалось, для этого открываем свойство .cat файла (или драйвера) и смотрим вкладку Digital Signatures — если есть то можем полюбоваться на результат, если нет, то где-то накосячили.
Также более достоверно можно проверить с помощью командной строки
signtool verify /pa /v /c catalog.cat
- Вбиваем в Inf Dir путь к папке где лежит сам .inf файл и все необходимые файлы к нему прилагающиеся.
- Выбираем ОСи где работает драйвер.
- Cross Cert — указываем путь к кросс-сертификату, если нужно подписать драйвер по-настоящему
- Cert Store — названия хранилища, где лежит наш сертификат (например PrivateCertStore)
- Cert Name — название сертификата (например TestCertforWDK), если сертификат один в хранилище, то можно и не заполнять это поле.
- Time Stamp — адрес таймстампингового центра, для тестового сертификата — можно оставить пустым
- Файлы которые надо подписать, тут нужно обязательно добавить cat файл (если еще не создан, то прописать его имя вручную), а также можно добавить все файлы драйверов
- Generate Catalog Only — если подписывать не надо, а только создать .cat файл
- Жмем Sign — чтобы создать cat-файл и подписать, жмем Log — чтобы почитать что произошло, часто бывают ошибки, например неправильно составлен inf-файл, либо signtool чего-то не нашел и т.п.
Литература по теме
http://msdn.microsoft.com/en-us/library/ff544865(VS.85).aspx

Windows 10, 8.1 и Windows 7 позволяют отключить обязательную проверку цифровой подписи драйверов
и установить неподписанный драйвер, однако если в последних версиях ОС это нужно сделать на постоянной основе, изменение опций с помощью bcdedit не помогает. Однако, может помочь самостоятельная подпись драйвера и его последующая установка, о чем и поговорим.
В этой инструкции подробно о том, как самостоятельно подписать драйвер для Windows 10, 8.1 или Windows 7 x64 или 32-бит (x86) для последующей установки в системе на постоянной основе без отключения проверки цифровой подписи драйверов, избежав при этом ошибок наподобие «INF стороннего производителя не содержит информации о подписи».
- Что потребуется для подписи драйвера
- Процесс самостоятельной подписи драйвера
- Отключение проверки подписи драйвера с помощью параметров загрузки
- Видео инструкция по отключению проверки цифровой подписи драйверов
- С помощью командной строки
- Отключение проверки в редакторе локальной групповой политики
- Бесплатная цифровая подпись для открытых драйверов
- С Рождеством Христовым!
- Подробности
- Импорт цифровой подписи
- Ручное создание подписи
- Шаг 1: Предварительные действия
- Шаг 2: Генерация ключа и сертификата
- Шаг 3: Создание конфигурационного файла
- Шаг 4: Создание подписи для драйвера
- Создаем самоподписанный сертификат драйвера
- Генерируем CAT файл драйвера
- Подписываем драйвер самоподписанным сертификатом
- Установка драйвера, заверенного самоподписанным сертификатом
- Драйверы Kernel-Mode и User-Mode
- Как отключить проверку цифровых подписей драйверов
- Отключение проверки цифровых подписей драйверов в Windows 8.1 и Windows 8
- Отключение с помощью особых вариантов загрузки
- Отключение с помощью редактора локальной групповой политики
- Как отключить проверку цифровой подписи драйвера в Windows 7
Что потребуется для подписи драйвера
Из первого набора достаточно будет установить Tools, из второго (представляет собой ISO-образ с установщиком, с которого нужно запустить KitSetup.exe) — выбрать Build Environments и Tools.
Обратите внимание: это не последние версии наборов инструментов, но они в равной степени подойдут для самостоятельной подписи драйверов для последующей установки во всех ОС от Windows 10 до Windows 7, при этом в инструкции не потребуется вдаваться в некоторые дополнительные нюансы.
Процесс самостоятельной подписи драйвера
В процессе для того, чтобы подписать драйвер самостоятельно, нам потребуется: создать сертификат, подписать драйвер этим сертификатом, установить сертификат в системе и установить драйвер. Начнем.
И вот теперь можно закрыть командную строку и установить драйвер из папки C:\cert\drv с помощью диспетчера устройств, или нажав правой кнопкой по .inf файлу и выбрав пункт «Установить». Потребуется подтвердить установку драйвера в окне «Не удалось проверить издателя этих драйверов» — нажать «Все равно установить этот драйвер».

Обратите внимание, что возможные ошибки в диспетчере устройств, отображаемые для устройства с самостоятельно подписанным драйвером обычно не имеют отношения непосредственно к процессу подписи (та же ошибка для них будет появляться и без подписи, при простом отключении проверки цифровой подписи драйверов в особых вариантах загрузки). Т.е. искать причину в этом случае нужно в чем-то ещё и читать подробную инструкцию по использованию драйвера (например, в случае драйверов для FlashTool).

В этой инструкции — три способа отключить проверку цифровой подписи драйвера в Windows 10: один из них работает однократно при загрузке системы, два других отключают проверку подписи драйверов навсегда, но не всегда. Это может пригодиться в тех случаях, когда драйвер не устанавливается, а ОС сообщает, что INF стороннего производителя не содержит информации о подписи или о других проблемах подписи, приводящих к ошибке при установке устройства.
Надеюсь, вы знаете, зачем вам потребовалось отключать эту функцию, потому как такие изменения настроек Windows 10 могут привести к повышению уязвимости системы перед вредоносным ПО. Возможно, существуют иные способы установить драйвер вашего устройства (либо другой драйвер), без отключения проверки цифровой подписи и, если такой способ имеется, лучше воспользоваться им. Если вы хотите серьезно подойти к вопросу, то можно также самостоятельно подписать драйвер цифровой подписью
(не для начинающих).
Отключение проверки подписи драйвера с помощью параметров загрузки
Первый способ, отключающий проверку цифровой подписи единожды, при перезагрузке системы и до следующей перезагрузки — использование параметров загрузки Windows 10.
- Для того, чтобы воспользоваться способом, зайдите в «Параметры» — «Обновление и безопасность» — «Восстановление». Затем, в разделе «Особые варианты загрузки» нажмите «Перезагрузить сейчас».

- После перезагрузки, пройдите по следующему пути: «Поиск и устранение неисправностей» (или «Диагностика») — «Дополнительные параметры» — «Параметры загрузки» и нажмите кнопку «Перезагрузить».

- После перезагрузки появится меню выборов параметров, которые будут использоваться в этот раз в Windows 10.

- Для того, чтобы отключить проверку цифровой подписи драйверов, выберите соответствующий пункт, нажав клавишу 7 или F7 (или Fn+F7 на некоторых ноутбуках).
Готово, после перезагрузки Windows 10 запустится с отключенной проверкой подписи драйверов и вы сможете установить свой драйвер без цифровой подписи.
Видео инструкция по отключению проверки цифровой подписи драйверов
Обычно, даже после перезагрузки в обычном режиме, установленное таким образом устройство продолжает работать, однако в некоторых случаях драйвер слетает и приходится повторять процедуру. Отсюда частый вопрос о том, как отключить проверку цифровой подписи Windows 10 навсегда. К сожалению, это не всегда возможно (но можно подписать драйвер самостоятельно, о чем упоминалось в начале инструкции), тем не менее обычный метод для постоянного отключения описан далее.
С помощью командной строки
Этот способ должен отключить проверку цифровой подписи драйверов навсегда — с использованием командной строки для редактирования параметров загрузки. Ограничения способа: у вас либо должен быть компьютер с BIOS, либо, если у вас UEFI, требуется отключить Secure Boot
(это обязательно). К сожалению, в последних версиях Windows 10 описываемое обычно не срабатывает, но попробовать можно.
Действия следующие — запустите командную строку Windows 10 от имени администратора ( Как запустить командную строку от имени администратора
). В командной строке по порядку введите следующие две команды:
- bcdedit.exe -set loadoptions DISABLE_INTEGRITY_CHECKS
- bcdedit.exe -set TESTSIGNING ON

После того, как обе команды будут выполнены, закройте командную строку и перезагрузите компьютер. Проверка цифровых подписей будет отключена, с одним лишь нюансом: в правом нижнем углу вы будете наблюдать уведомление о том, что Windows 10 работает в тестовом режиме (чтобы убрать надпись и вновь включить проверку, введите в командной строке bcdedit.exe -set TESTSIGNING OFF).
И еще один вариант отключения проверки подписи с помощью bcdedit, который по некоторым отзывам срабатывает лучше (проверка не включается снова автоматически при следующих загрузка Windows 10):
- Загрузить компьютер в безопасном режиме (см. Как зайти в безопасный режим Windows 10
). - Открыть командную строку от имени администратора и ввести следующую команду (нажав Enter после нее).
- bcdedit.exe /set NOINTEGRITYCHECKS ON
- Перезагрузить Windows 10 в обычном режиме.
В дальнейшем, если требуется снова включить проверку, сделайте это тем же способом, но вместо on
в команде используйте off
.
Отключение проверки в редакторе локальной групповой политики
Проверку подписи драйверов ранее можно было отключить (на сегодня метод не работает) с помощью редактора локальной групповой политики, однако эта возможность присутствует только в Windows 10 Pro (нет в домашней версии). Для запуска редактора локальной групповой политики, нажмите клавиши Win+R на клавиатуре, а затем введите gpedit.msc в окно «Выполнить», нажмите Enter.
В редакторе перейдите к разделу Конфигурация пользователя — Административные шаблоны — Система — Установка драйвера и дважды кликните по параметру «Подписывание кода для пакетов драйверов» (ранее пункт назывался «Цифровая подпись драйверов устройств») в правой части.

Откроется оно с возможными значениями данного параметра. Отключить проверку можно двумя способами:
- Установить значение «Отключено».
- Установить значение «Включено», а затем, в разделе «Если Windows обнаруживает файл драйвера без цифровой подписи» установить «Пропустить».

После установки значений, нажмите Ок, закройте редактор локальной групповой политике и перезагрузите компьютер (хотя, в общем-то, должно сработать и без перезагрузки).
Бесплатная цифровая подпись для открытых драйверов
Теперь любой проект с открытым исходным кодом
, который разрабатывает драйвер для Windows, благодаря Фонду ReactOS может подписать свой драйвер бесплатно
.
Подписание для 32-битных драйверов — нечто рекомендуемое, поскольку это гарантирует, что драйвер безопасен, и никто не внедрил в него руткит впоследствии. Подписание для на 64-битных драйверов — НЕОБХОДИМОСТЬ, новые версии Windows не позволяют выполнять неподписанный драйвер, поэтому проекты с открытым исходным кодом вынуждены платить немалые суммы за подписание своих драйверов. Обычно лицензия может стоить 2000 долларов в течение года, таким образом, это — хорошая экономия для проектов с открытым исходным кодом.
С Рождеством Христовым!
Подробности
Фонд ReactOS
— это организация, которая занимается юридическими вопросами проекта и владеет торговыми марками и логотипами, связанными с ReactOS. Фонд был основан несколько лет назад и находится в Москве, а два недавних достижения помогли расширить видение его легитимности.
Первым достижением стало утверждение ReactOS как зарегистрированного в России товарного знака, владельцем которого является Фонд. Это означает, что Фонд занял гораздо более сильную юридическую позицию, которая нужна для прекращения несанкционированного использования слова ReactOS, которое, как многие помнят, уже не является мелочью, учитывая последние события.
Вторым достижением является то, что у Фонда ReactOS появился сертификат VeriSign для подписи кода, и он может быть использован для подписания 64-битных драйверов для Windows. Фонд готов оказать помощь другим проектам с открытым кодом, которые хотят распространять собственные 64-битные драйверы, но не в состоянии приобрести сертификат для их подписания.
Однако, это предложение зависит от выполнения следующих условий:
- Фонд будет подписывать лишь драйверы с открытым исходным кодом.
- Фонд будет самостоятельно собирать драйвер для подписи из исходного кода. Мы не примем уже скомпилированный «чёрный ящик». Это означает, что все исходные коды и инструменты, необходимые для сборки драйвера, должны быть доступны для Фонда.
- Драйвер не должен использоваться для обхода систем безопасности в ОС. Сюда же входят попытки взлома функций DRM, к примеру таких, как процессы обеспечения безопасности.
- Драйвер не должен использоваться для участия в других видах незаконной деятельности.
- Где-либо на странице проекта/продукта должна иметься ссылка на домашнюю страницу ReactOS. Желательно, чтобы она была расположена там, где её будет легко найти.
Фонд оставляет за собой право отказать в подписании драйвера даже при соблюдении указанных выше условий. Все запросы необходимо направлять Цзыляну Гуо (ziliang.guo at reactos.org).
- Способ 1: Импорт цифровой подписи
- Способ 2: Ручное создание подписи
- Вопросы и ответы

Перед началом инструкций отметим, что иногда бывает проще отключить проверку цифровых подписей в операционной системе, нежели вручную подписывать драйвер. К тому же есть и альтернативные варианты инсталляции неподписанного ПО, о чем более детально читайте в других руководствах на нашем сайте, воспользовавшись ссылками ниже.
Подробнее:
Отключение проверки цифровой подписи драйверов в Windows 7
Установка драйвера без проверки цифровой подписи в Windows
Импорт цифровой подписи
Первый вариант подходит тем пользователям, кто собирается устанавливать его в операционную систему только один раз и не заинтересован в дальнейшем распространении. Этот способ лучше всего использовать в тех ситуациях, когда вы скачали драйвер, но оказалось, что он не подписан и инсталлировать его не получается. Тогда от вас требуется перенести его конфигурацию в Windows 7, что осуществляется так:
- Перейдите в папку с драйвером и отыщите там файл формата INF, который и должен быть установлен в ОС. Щелкните по нему ПКМ, чтобы вызвать контекстное меню.
- Внизу списка выберите пункт «Свойства»
. - Переместитесь на вкладку «Безопасность»
. - Полностью выделите имя файла и скопируйте его клавишами Ctrl + C
или вызвав контекстное меню нажатием ПКМ. - Запустите «Командную строку»
от имени администратора любым удобным методом, например, отыскав приложение через меню «Пуск»
. - Введите там команду
pnputil.exe –a
и через пробел вставьте скопированное ранее имя. Можно поступить и по-другому, используяcd
. Тогда через нее нужно переместиться к каталогу с драйвером и вписатьpnputil.exe –a + название файла
. - Ожидайте окончания обработки компонента, что займет буквально несколько секунд. После на экране отобразится уведомление о том, что импорт настроек произошел успешно.







Теперь драйвер считается зарегистрированным. Если инсталляция остальных компонентов должна происходить при помощи исполняемого файла, перейдите в каталог с программным обеспечением и запустите его, чтобы завершить установку.
Ручное создание подписи
Этот способ более сложный, поэтому пришлось даже разделить его на этапы во избежание проблем с пониманием. Его суть заключается в использовании фирменных средств разработчика от Microsoft, чтобы создать подпись для пользовательского драйвера. Особое внимание этому методу стоит уделить тем, кто заинтересован в ручной разработке драйверов.
Шаг 1: Предварительные действия
Компания Майкрософт распространяет все необходимые утилиты в свободном доступе, однако по умолчанию они отсутствуют в Windows 7, поэтому сначала придется заняться их загрузкой и инсталляцией.
Перейти на скачивание Windows SDK for Windows 7
- Откройте ссылку выше, чтобы открыть страницу скачивания Microsoft Windows SDK, где нажмите по кнопке «Download»
. - Загрузка инсталлятора начнется в автоматическом режиме: ожидайте ее окончания, а затем запустите исполняемый файл.
- При появлении окна контроля учетных записей разрешите внесение изменений.
- Следуйте отобразившейся на экране инструкции и переходите далее.
- По ссылке, ведущей на страницу приложения, загрузите Windows Driver Kit.
Перейти на скачивание Windows Driver Kit 7.1.0
- Это целый пакет разных утилит и дополнительных компонентов, распространяющийся в виде ISO-образа. По завершении загрузки вам необходимо смонтировать его через любую удобную программу, о чем читайте по ссылке далее.
Подробнее: Как смонтировать образ в программе DAEMON Tools
- После запуска диска через виртуальный привод откройте EXE-файл для начала инсталляции.
- Укажите версию операционной системы.
- Выберите для установки все присутствующие инструменты, отметив их галочками, и завершите операцию.
- Затем откройте корень системного логического тома жесткого диска, где создайте папку с названием «DriverCert»
. В нее будут помещены все зависящие от драйвера объекты для удобства взаимодействия с ними. - Переходите по стандартным расположениям установленных компонентов, чтобы запомнить путь ко всем каталогам. Вы можете скопировать их или записать, чтобы не запутаться при выполнении следующих действий.











Сейчас уже существуют новые версии рассмотренных инструментов, но вам нужно загружать только те сборки, на которые мы оставили ссылки. Связано это с тем, что разработчики в новых версиях прекратили поддержку используемых далее утилит, что не позволит вручную подписать драйвер. Убедитесь в том, что все компоненты установлены, перезагрузите компьютер и переходите далее.
Шаг 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



Следуйте отобразившимся в графическом меню инструкциям, чтобы завершить подпись. На этом процесс считается оконченным, а подписанный драйвер остается только вручную установить, если это требуется.
Подробнее: Ручная установка драйверов в Windows 7
Все 64 битные версии Windows по умолчанию запрещают установку драйверов устройств, которые не подписаны с помощью корректной цифровой подписи. Неподписанные драйвер блокируются операционной системой. Наличие цифровой подписи гарантирует, что драйвер выпущен доверенным разработчиком или вендором, а его код не был модифицирован.
В Windows x64 вы можете отключить проверку цифровой подписи устанавливаемого драйвера: с помощью групповой политики или тестового режима загрузки системы (подробнее все способы описаны в статье Отключаем проверку цифровой подписи для установки неподписанных драйверов в Windows
).
Сегодня мы покажем, как можно самостоятельно подписать любой неподписанный драйвер для
x64 битной версии Windows
(инструкция применима для Windows 11, 10, 8.1 и 7).
Предположим, что у нас имеется драйвер некого устройства для x64 Windows 10, у которого отсутствует цифровая подпись (в нашем примере это будет драйвер для довольно старого графического адаптера видеокарты). Я скачал архив с драйверами для Windows с сайта производителя (мне удалось найти драйвер только для Windows Vista x64). Архив с драйвером я распаковал в каталог c:\tools\drv1\. Попробуем установить драйвер, добавив его в хранилище драйверов Windows
с помощью стандартной утилиты pnputil
.
Pnputil –a "C:\tools\drv1\xg20gr.inf"
Примечание
. Эта и все последующие команды выполняются в командной строке, запущенной с правами администратора.
При установке драйвера в Windows 7 появляется предупреждение о том, что ОС не может проверить цифровую подпись драйвера.

В Windows 10 (21H1) появляется предупреждение:
Не удалось добавить пакет драйвера: INF стороннего производителя не содержит информации о подписи.
Adding the driver package failed : The third-party INF does not contain digital signature information.

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

The third-party INF does not contain digital signature information.
INF стороннего производителя не содержит информации о подписи.

Попробуем подписать данный драйвер с помощью самоподписанного сертификата.
- Windows
SDK
(или Microsoft Visual Studio 2005 или выше) для вашей версии Windows. В состав этих пакетов входит Windows
SDK
Signing
tools
for
Desktop
, в которую включена необходимая нам утилита —
signtool.exe;

- Windows Driver Kit (WDK)
— https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
Совет
. Перед установкой этих инструментов, проверьте
, что в Windows установлен . NET Framework 4.
Создаем самоподписанный сертификат драйвера
Создайте в корне диска каталог
C:\DriverCert
.
Для создания самоподписанного сертификата типа Code Signing можно использовать PowerShell командлет New-SelfSifgnedCertificate
. В этом примере мы создадим самоподписанный сертификат со сроком действия 3 года.
$todaydate = Get-Date
$add3year = $todaydate. AddYears
$cert = New-SelfSignedCertificate -Subject "Winitpro” -Type CodeSigningCert -CertStoreLocation cert:\LocalMachine\My -notafter $add3year
Затем нужно экспортировать данный сертификат в pfx файл с паролем:

Теперь нужно добавить сертификат в доверенные корневые сертификаты и в сертификаты доверенных издателей:
$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
В предыдущих версиях Windows для создания сапомодписанных сертификатов нужно использовать утилиту makecert.exe из Windows Software Development Kit (SDK). В этом случае команды для создания сертификата будут выглядеть так:
cd “C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\bin”
makecert -r -sv C:\DriverCert\myDrivers.pvk -n CN="Winitpro" C:\DriverCert\MyDrivers.cer
На основе созданного сертификата создайте публичный ключ для сертификата издателя ПО (PKCS).
cert2spc C:\DriverCert\myDrivers.cer C:\DriverCert\myDrivers.spc
Объедините публичный ключ (.spc) и персональный ключ (.pvk) в одном файле сертификата формата Personal Information Exchange (.pfx).
Добавьте сертификат в доверенные:
certmgr.exe -add C:\DriverCert\myDrivers.cer -s -r localMachine ROOT
certmgr.exe -add C:\DriverCert\myDrivers.cer -s -r localMachine TRUSTEDPUBLISHER
В домене вы можете централизованно распространить этот сертификат на рабочие станции с помощью групповой политики
. Запустите консоль управления локальными сертификатами компьютера и убедитесь, что ваш сертификат есть в хранилищах Trusted Publishers
и Trusted
Root Certification Authorities
локальной машины).
Примечание
. При проверке хранилища сертификатов с помощью утилиты Sigcheck
этот сертификат будет отображаться как недоверенный, т.к. он отсутствует в списке со списком корневых сертификатов Microsoft (этот список нужно периодически обновлять
).

Совет
. Несмотря на то, что сертификат имеет ограниченный срок действия, истечение срока действия сертификата CodeSigning означает, что вы не сможете создавать новые сигнатуры. Срок действия драйвера, уже подписанного этим сертификатом, бессрочен (либо старые сигнатуры действуют в течении указанного timestamp).
Генерируем CAT файл драйвера
Создайте каталог C:\DriverCert\xg
и скопируйте в него все файлы из каталога, в который первоначально был распакован архив с драйвером (c:\tools\drv1\). Убедить что среди файлов имеются файлы с расширением .sys
и .inf
(в нашем случае xg20grp.sys и xg20gr.inf).
md C:\DriverCert\xg
xcopy c:\tools\drv1\ C:\DriverCert\xg /i /c /k /e /r /y
Перейдем в каталог:
cd “C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86”
На основе inf файла с помощью утилиты inf2cat.exe (входит в состав Windows Driver Kit -WDK) сгенерируйте cat файл (содержит информацию о всех файлах пакета драйвера).
inf2cat.exe /driver:"C:\DriverCert\xg" /os:7_X64 /verbose

Чтобы убедитесь, что процедура прошла корректно, проверьте, что в каталоге появился файл C:\DriverCert\xg\xg20gr.cat, и в логе есть сообщения:
Signability test complete.
Catalog generation complete.
Совет
. В моем случае команда Inf2Cat.exe вернула ошибку:
Signability test failed. Errors: 22.9.7: DriverVer set to incorrect date (must be postdated to 4/21/2009 for newest OS) in \hdx861a.inf

DriverVer=05/01/2009,9.9.9.9

Подписываем драйвер самоподписанным сертификатом
Перейдите в каталог:
cd "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64"
Подпишите комплект файлов драйвера созданным сертификатом. В качестве сервиса таймстампа (штамп времени) воспользуемся ресурсом Globalsign. Следующая команда подпишет CAT файл цифровой подписью с помощью сертификата, хранящегося в PFX-файл, защищенном паролем.
В современных версиях Windows 10 и Windows 11 при выполнении этой команды появится ошибка:
SignTool Error: No file digest algorithm specified. Please specify the digest algorithm with the /fd flag. Using /fd SHA256 is recommended and more secure than SHA1. Calling signtool with /fd sha1 is equivalent to the previous behavior. In order to select the hash algorithm used in the signing certificate's signature, use the /fd certHash option.
Нужно использовать другую команду:

Если при выполнении команды появляется ошибка
SignTool Error: An unexpected internal error has occurred, или Error information: SignerTimeStamp() failed. (-2147012865/0x80072eff)
, попробуйте другой URL адрес сервера. Попробуйте любой из списка:
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 Number of files successfully Signed: 1
Цифровая подпись драйвера содержится в .cat файле, на который ссылается .inf файл драйвера. С помощью следующей команды можно проверить цифровую подпись драйвера в cat файле:
SignTool verify /v /pa c:\DriverCert\xg\xg20gr.cat

Также можно увидеть информацию о сертификате в свойствах CAT файла на вкладке Digital Signatures.

Если сертификат не доверенный (или не был добавлен в хранилище корневых доверенных сертификатов), то при выполнении команды SignTool verify появится ошибка:
SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
CAT файл содержит цифровые подписи (отпечатки / thumbprints) всех файлов, которые находятся в каталоге драйвера (файлов, которые указаны в INF файле в секции CopyFiles
). Если любой из этих файлов был изменен, то контрольная сумма файлов не будет совпадать с данными в CAT файле, в результате установка такого драйвера закончится ошибкой.
Установка драйвера, заверенного самоподписанным сертификатом
Попробуйте еще раз установить подписанный вами драйвер, выполнив команду:
Pnputil –i –a C:\DriverCert\xg20\xg20gr.inf
Successfully installed the driver on a device on the system. Driver package added successfully.

В Windows 10 и 11 появляется предупреждение о том, уверены ли вы, что хотите установить этот драйвер. Нажав Install
, вы установите драйвер в системе.


Если установка драйвера прошла успешно, в файле 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
cmd: Pnputil -i -a c:\DriverCert\xg\xg20gr.inf
ndv: Flags: 0x00000000
ndv: INF path: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf
inf: {SetupCopyOEMInf: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf} 23:32:57.046
inf: Copy style: 0x00000000
inf: Driver Store Path: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf
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] Драйверы Kernel-Mode и User-Mode
Event ID: 7000 ERROR_DRIVER_BLOCKED 1275 (0x4FB) This driver has been blocked from loading.

Проверить, включен ли режим Secure Boot можно с помощью команды:

Все драйвера, режима ядра, загружаемые при включенном SecureBoot, должны быть подписаны в ходе процесса сертификации Microsoft (WHQL — Windows Hardware Quality Lab). Причина в том, что при загрузке ядра, UEFI не может проверить сертификаты в локальном хранилище Windows.
SignTool Error: Signing Cert does not chain to a Microsoft Code Verification Root.
Microsoft ввела обязательную сертификацию сторонних драйверов по программе Windows Hardware Compatibility Program начиная с Windows 10 1607.
Само подписанные драйвера режима пользователя (это обычно принтеры, сканеры, плоттеры и т.д.) будут работать даже при включенном SecureBoot.
Для kernel-mode драйверов придется отключить проверку цифровой подписи при загрузке и загружаться в тестовом режиме с помощью bcdedit.exe, как описано здесь
:
bcdedit.exe /set /nointegritychecks on
bcdedit.exe /set testsigning ON
Как отключить проверку цифровых подписей драйверов

Если вам требуется установить драйвер, который не имеет цифровой подписи, и вы осознаете все риски такого действия, в этой статье покажу несколько способов отключить проверку цифровых подписей драйверов в Windows 8 (8.1) и Windows 7 (См. также: Как отключить проверку цифровой подписи драйверов в Windows 10
). Действия по отключению проверки цифровой подписи вы выполняете на свой страх и риск, делать это не рекомендуется, особенно если вы точно не знаете, что и зачем вы делаете.
Кратко о рисках установки драйверов без проверенной цифровой подписи: иногда бывает так, что с драйвером все в порядке, цифровая подпись отсутствует в драйвере на диске, который распространяется производителем вместе с оборудованием, но на самом деле угрозы он не представляет. А вот если вы скачали такой драйвер из Интернета, то он, по сути, может делать все что угодно: перехватывать нажатия клавиш и буфер обмена, модифицировать файлы при копировании на флешку или при загрузке их из Интернета, пересылать информацию злоумышленникам — это лишь несколько примеров, на самом деле, возможностей тут очень много.
Отключение проверки цифровых подписей драйверов в Windows 8.1 и Windows 8
В Windows 8 есть два способа отключить проверку цифровой подписи в драйвере — первый позволяет отключить ее однократно для установки конкретного драйвера, второй — на все последующее время работы системы.
Отключение с помощью особых вариантов загрузки
В первом случае, откройте панель Charms справа, нажмите «Параметры» — «Изменение параметров компьютера». В пункте «Обновление и восстановление» выберите «Восстановление», затем — особые варианты загрузки и нажмите «Перезагрузить сейчас».

После перезагрузки выберите пункт Диагностика, затем — Параметры загрузки и нажмите «Перезагрузка». На появившемся экране вы сможете выбрать (цифровыми клавишами или F1-F9) пункт «Отключить обязательную проверку подписи драйверов». После загрузки операционной системы, вы сможете установить неподписанный драйвер.
Отключение с помощью редактора локальной групповой политики
Следующий способ отключить проверку цифровой подписи драйвера — использовать редактор локальной групповой политики Windows 8 и 8.1. Для его запуска нажмите клавиши Win + R на клавиатуре и введите команду gpedit.
msc

В редакторе локальной групповой политики откройте Конфигурация пользователя — Административные шаблоны — Система — Установка драйвера. После этого кликните дважды по пункту «Цифровая подпись драйверов устройств».

Выберите пункт «Включено», а в поле «Если Windows обнаруживает файл драйвера без цифровой подписи» выберите пункт «Пропустить». На этом все, можете нажать «Ок» и закрыть редактор локальной групповой политики — проверка отключена.
Как отключить проверку цифровой подписи драйвера в Windows 7
В Windows 7 есть два, по сути одинаковых, способа отключения данной проверки, в обоих случаях для начала вам потребуется запустить командную строку от имени Администратора (для этого можно найти ее в меню Пуск, кликнуть правой кнопкой мыши и выбрать пункт «Запуск от имени Администратора».
После этого в командной строке введите команду bcdedit.exe /set nointegritychecks ON
и нажмите Enter (для повторного включения используйте ту же команду, написав вместо ON OFF).

Второй способ — использовать по порядку две команды:
- bcdedit.exe -set loadoptions DISABLE_INTEGRITY_CHECKS
и после сообщения о том, что операция выполнена успешно — вторая команда - bcdedit.exe -set TESTSIGNING ON
Вот, пожалуй, и все, что вам потребуется для установки драйвера без цифровой подписи в Windows 7 или 8. Напомню, что эта операция не вполне безопасна.
</article
