- Энциклопедия Windows
- Драйвера без цифровой подписи в Windows 7
- Отключение проверки цифровых подписей у драйверов в Windows 7
- Как вручную подписать драйвер в Windows 7
- Программа ReadyDriverPlus
- Как подписать драйвер Windows 10, 8.1 и Windows 7 x64 и x86
- Что потребуется для подписи драйвера
- Процесс самостоятельной подписи драйвера
- Все о подписи драйверов Windows
Энциклопедия Windows
Все об использовании и настройке Windows
- Windata
- »
- Windows 7
- »
- Оптимизация [7]
- » Драйвера без цифровой подписи в Windows 7
Драйвера без цифровой подписи в Windows 7
Многие пользователи уже встречались с неподписанными драйверами. Хочешь установить необходимый драйвер для какой-то программы, а Windows 7 показывает здоровенную фигу – мол, иди гуляй, парнишка, у драйвера нет цифровой подписи. Как решить такую проблему?
Собственно, решений здесь ровным счетом два – либо избавиться вообще от проверки цифровых подписей, либо…добавить эту подпись самостоятельно! Ага, вы небось и не знали, что драйвера можно подписывать собственноручно? Век живи – век учись.
Но сначала узнаем, как можно отключить проверку цифровой подписи у драйверов.
Отключение проверки цифровых подписей у драйверов в Windows 7
Отключить сие безобразие можно в специальном режиме Windows 7, который выбирается при загрузке системы. Как правило, такая возможность актуальна для программ, что устанавливают свой драйвер без перезагрузки.
Для отключения следует открыть загрузочное меню Windows 7, для чего используется клавиша . Включим компьютер, подождем пока промелькнет текст BIOS и начинаем часто нажимать клавишу . Жмем-жмем и появится либо меню выбора операционной системы (если их несколько), либо загрузочное меню.
В первом случае выберите нужную версию Windows, затем снова жмите (надо успеть нажать до того, как Windows загрузится), после чего появится нужное нам меню.
В этом меню выберите параметр Отключение обязательной проверки подписи драйверов и нажмите клавишу .
В результате, Windows будет загружена в специальном режиме. Но не пугайтесь, от обычного он отличается только тем, что в нем нет проверки цифровой подписи у драйверов – и больше ничем. Достаточно перезагрузить Windows и обычный режим проверки снова будет включен.
Кстати, если устанавливать некоторые драйвера в таком режиме, вредная Windows все равно может показать предупреждение, что драйвер не подписан. Наплюйте на него, закройте это предупреждение, и драйвер будет все равно установлен.
Все это замечательно, но я хочу сам подписывать драйвера, ага! Об этом мы поговорим в следующем разделе.
Как вручную подписать драйвер в Windows 7
Сделать такое злодейство, как подпись драйвера, нам поможет программа DSEO (Driver Signature Enforcement Overrider). С помощью данной программы можно создавать собственные подписи драйверов. Учтите – чтобы программа работала, обязательно нужно отключить UAC, иначе фокуса не получится.
Сама программа простая как веник, и работать с ней чрезвычайно просто.
- Запустите программу, щелкните на кнопке Next, затем еще раз на кнопке Next.
- Выберите переключатель Enable Test Mode (тестовый режим), щелкните Next.
- Выберите переключатель Sign a System File (подписать системный файл) и щелкните на кнопке Next.
- Укажите путь к файлу драйвера (вроде C:\Windows\System32\Drivers\lkindrv.sys), затем снова щелкните на кнопке Next.
- Таким же макаром подписывается необходимое количество драйверов. Осталось перезагрузиться и спокойно себе устанавливайте нужный драйвер.
Есть у такого метода и нюансы – данный тестовый режим будет включен постоянно. К слову сказать, он совершенно официально предназначен для тестирования новых драйверов. Иногда из-за него рядом с панелью задач отображается номер сборки Windows и указано, что операционная система работает в тестовом режиме. Из-за надписи можно не переживать, после выхода из тестового режима она исчезнет.
А как из него выйти? Запустить DSEO, выбрать переключатель Disable Test Mode и снова перезагрузиться.
Метод весьма действенный, причем он не изменяет системный загрузчик либо системные файлы Windows. Однако, есть и альтернативы, которые изменяют загрузчик для автоматического выбора пункта меню Отключение обязательной проверки подписи драйверов. Речь идет о программе ReadyDriverPlus и подробнее о ней в следующем разделе.
Программа ReadyDriverPlus
Программа ReadyDriverPlus позволяет сделать выбор пункта Отключение обязательной проверки подписи драйверов автоматическим. Другими словами, не придется постоянно давить кнопку при загрузке – мелочь, а приятно.
При установке программы достаточно указать, где находится папка Boot с загрузочными файлами Windows (в большинстве случаев C:\Boot), после чего перезагрузиться. Папка Boot является скрытой и находится на диске C:, либо в скрытом дисковом разделе.
Теперь при загрузке Windows на несколько секунд появится вариант загрузки – с проверкой подписи или без проверки. Если не выбрать вариант обычной загрузки, то Windows будет загружена в нужном нам режиме.
У некоторых пользователей есть сложности с нахождением папки Boot – действительно, она умеет прятаться (и не зря, слишком важные в ней файлы). Поскольку папка понадобится для работы программы, найти ее можно благодаря советам, представленным в статье “Скрытая папка Boot с загрузочными файлами Windows 7“.
Как подписать драйвер 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
Как известно в х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
и перезагружаемся, в итоге на десктопе, после перезагрузки, по углам красоваться соответствующие надписи.
Настоящий сертификат
Тут тоже не все так просто. Дело в том, что не любой CA может выдавать сертификаты для подписи драйверов Windows, а только те, которые авторизованы самой Microsoft, это значит, что корневые сертификаты этих издателей должны быть подписаны Microsoft — что, как раз и выражается в виде этого кросс-сертификата. Вот именно из-за отсутствия кросс-сертификата — тестовая подпись, никогда не будет работать как настоящая. Список доверенных CA, которые обладают такими кросс-сертификатами — представлен тут, там же можно скачать и сами кросс-сертификаты.
После того, как вы выложите несколько сотенок $$$ доверенному центру сертификации, они выдадут вам .pfx файл в котором будут содержаться публичный и приватный ключи. Вы его запустите и с помощью нехитрого диалога (как на рисунке ниже), установите в систему.
Подпись драйвера
Процесс подписи для тестового и настоящего сертификата во многом похожи, различия состоят лиш в том, что:
- для тествой подписи не нужен кросс-сертификат
- для тествой подписи можно не делать таймстамп
Итак приступим
- Качаем тулзу для подписи — 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
EasySign
В результате всех моих исследований на предмет САБЖ-а, я некатал по-быстрому простенькую программку EasySign, которая может подписывать дрова без дополнительного гимора с командной строкой и bat-файлами. Возможно кому-то будет полезно.
Саму прогу можно скачать тут, а мануалку почитать ниже:
- Вбиваем в Inf Dir путь к папке где лежит сам .inf файл и все необходимые файлы к нему прилагающиеся.
- Выбираем ОСи где работает драйвер.
- Cross Cert — указываем путь к кросс-сертификату, если нужно подписать драйвер по-настоящему
- Cert Store — названия хранилища, где лежит наш сертификат (например PrivateCertStore)
- Cert Name — название сертификата (например TestCertforWDK), если сертификат один в хранилище, то можно и не заполнять это поле.
- Time Stamp — адрес таймстампингового центра, для тестового сертификата — можно оставить пустым
- Файлы которые надо подписать, тут нужно обязательно добавить cat файл (если еще не создан, то прописать его имя вручную), а также можно добавить все файлы драйверов
- Generate Catalog Only — если подписывать не надо, а только создать .cat файл
- Жмем Sign — чтобы создать cat-файл и подписать, жмем Log — чтобы почитать что произошло, часто бывают ошибки, например неправильно составлен inf-файл, либо signtool чего-то не нашел и т.п.