Как подписать драйвер 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 стороннего производителя не содержит информации о подписи».
Что потребуется для подписи драйвера
Для того, чтобы выполнить все описанные далее шаги, скачайте и установите следующие инструменты с сайта Майкрософт:
- Microsoft Windows SDK for Windows 7 https://www.microsoft.com/en-us/download/details.aspx?id=8279
- Windows Driver Kit 7.1.0 https://www.microsoft.com/en-us/download/details.aspx?id=11800
Из первого набора достаточно будет установить Tools, из второго (представляет собой ISO-образ с установщиком, с которого нужно запустить KitSetup.exe) — выбрать Build Environments и Tools.
Обратите внимание: это не последние версии наборов инструментов, но они в равной степени подойдут для самостоятельной подписи драйверов для последующей установки во всех ОС от Windows 10 до Windows 7, при этом в инструкции не потребуется вдаваться в некоторые дополнительные нюансы.
Процесс самостоятельной подписи драйвера
В процессе для того, чтобы подписать драйвер самостоятельно, нам потребуется: создать сертификат, подписать драйвер этим сертификатом, установить сертификат в системе и установить драйвер. Начнем.
- Создайте в корне диска C какую-либо папку (так к ней проще будет обращаться в дальнейшем), например, C:\cert, где мы будем работать с сертификатами и драйверами.
- Запустите командную строку от имени администратора (нужны для 18-го шага). Далее используем следующие команды по порядку. Файлы драйвера пока не потребуются. Во время выполнения второй команды вас попросят ввести пароль, я использую password в окне запроса и далее в командах, вы можете использовать свой.
cd "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin"
makecert -r -sv C:\cert\driver.pvk -n CN="remontka" C:\cert\driver.cer
cert2spc C:\cert\driver.cer C:\cert\driver.spc
pvk2pfx -pvk C:\cert\driver.pvk -pi password -spc C:\cert\driver.spc -pfx C:\cert\driver.pfx -po password
- До этого этапа всё должно пройти как на скриншоте ниже, командную строку не закрываем.
- В папке C:\cert создайте вложенную папку, например, drv и поместите туда свои файлы драйвера. Но: если вам требуется драйвер только для x64, не копируйте .inf файл для x86 систем в эту папку и наоборот. В командной строке используем следующие команды:
cd C:\WinDDK\7600.16385.1\bin\selfsign\
inf2cat.exe /driver:"C:\cert\drv" /os:7_X64 /verbose
- В предыдущей команде для драйвера 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. Далее используем следующие команды (требуется подключение к Интернету).
cd "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin"
signtool sign /f C:\cert\driver.pfx /p password /t http://timestamp.verisign.com/scripts/timestamp.dll /v C:\cert\drv\catalog.cat
- Результат подписи файла драйвера без ошибок на скриншоте ниже. Следующий шаг — добавить самоподписанный сертификат в список доверенных в системе, сделать это можно следующими двумя командами по порядку
certmgr.exe -add C:\cert\driver.cer -s -r localMachine ROOT certmgr.exe -add C:\cert\driver.cer -s -r localMachine TRUSTEDPUBLISHER
- В результате вы должны получить сообщение «CertMgr Succeeded». Если Failed или certmgr.exe не является внутренней или внешней командой — убедитесь, что командная строка запущена от имени администратора, а вы находитесь в нужной папке (см. 15 шаг).
И вот теперь можно закрыть командную строку и установить драйвер из папки C:\cert\drv с помощью диспетчера устройств, или нажав правой кнопкой по .inf файлу и выбрав пункт «Установить». Потребуется подтвердить установку драйвера в окне «Не удалось проверить издателя этих драйверов» — нажать «Все равно установить этот драйвер».
Обратите внимание, что возможные ошибки в диспетчере устройств, отображаемые для устройства с самостоятельно подписанным драйвером обычно не имеют отношения непосредственно к процессу подписи (та же ошибка для них будет появляться и без подписи, при простом отключении проверки цифровой подписи драйверов в особых вариантах загрузки). Т.е. искать причину в этом случае нужно в чем-то ещё и читать подробную инструкцию по использованию драйвера (например, в случае драйверов для FlashTool).
Nazer92
Спасибо за инструкцию, имеется вебка A4Tech PK-52MF драйвера на х64 не ставятся (хоть с диска в комплекте) делал поэтапно, столкнулся с ошибкой, была на :
«SignTool Error: An unexpected internal error has occurred.
Error information: «SignerTimeStamp() failed.» (-2147012865/0x80072eff)»
Заменил на
, прошло успешно.
В итоге драйвер подписался, установился но в состоянии устройства писало : Не удается проверить цифровую подпись драйверов необходимых для данного устройства.. могла быть произведена установка неправильно подписаного или повреждённого файла либо вредоносной программы неивз.происхождения (код 52)
Я так понял что в моём случае с этим драйвером так не пройти? Всё равно надо будет отключать проверку подписи и устанавливать только так?
Спасибо
Ответить
Dmitry
Похоже на то, но не факт что и с отключенной проверкой подписи установится.
Ответить
Nazer92
Да с отключённой ставится оригинальный драйвер нормально, но хотелось бы как у людей, обычной установкой, а не заменой Вебки)
Но немного опыта не помешает, спасибо.
Ответить
Александр
cd C:\WinDDK\7600.16385.1\bin\selfsign\ нету этой папки хотя рядом везде искал не нашел inf2cat.exe
Ответить
UserNameNeVazhen
У кого выходит ошибка на последнем шаге «SignTool Error: An unexpected internal error has occurred.
Error information: «SignerTimeStamp() failed.» (-2147012865/0x80072eff)»
Используйте другие URL в команде, к примеру у меня сработал первый. Nazer92 заметил верно, но предложенный им вариант не работает
Ответить
Юрий
У меня заработал только этот, я проверял вообще все что нашёл в сети
Ответить
Юрий
Спасибо за инструкцию, хотя пути файлов у меня другие, но сами команды правильные, и сервер временной метки заработал у меня другой, не тот что в статье, а так всё доступно и понятно!
Ответить
Владимир
Errors:
22.9.1: mukeydrv.sys in [drivers_dir] of \mukeydrv.inf is missing or cannot be decompressed from source media. Please verify all path values specified in SourceDisksNames, SouceDisksFiles, and CopyFiles sections resolve to the actual location of the file, and are expressed in terms relative to the location of the inf.
Ответить
Dmitry
Сообщает, что не найден необходимый файл mukeydrv.inf в папке drivers_dir и если он где-то еще находится, то нужно пути в разделах SourceDisksNames, SouceDisksFiles и CopyFiles прописать (но наверное проще будет просто скопировать в указанную папку)
Ответить
Владимир
Так я и скопировал их с С:\cert\drv там 2 файла sys и inf.
Как вы и писали
Ответить
Владимир
Processing directory (C:\cert\drv\) file (mukeydrv.inf)
Processing directory (C:\cert\drv\) file (mukeydrv.sys)
Parsing INF: C:\cert\drv\mukeydrv.inf
Finished parsing INFs
Processing INF: C:\cert\drv\mukeydrv.inf
Finished processing INFs
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Testing driver package…
Signability test failed.
Errors:
22.9.1: mukeydrv.sys in [drivers_dir] of \mukeydrv.inf is missing or cannot be decompressed from source media. Please verify all path values specified in SourceDisksNames, SouceDisksFiles, and CopyFiles sections resolve to the actual location of the file, and are expressed in terms relative to the location of the inf.
Warnings:
None
Ответить
Dmitry
Теперь вроде как ругается на отсутствие mukeydrv.sys (или невозможность его декомпрессии) в drivers_dir, указанной в mukeydrv.inf
Да, я прочел комментарий, что всё на месте, но точнее вот так не видя ситуацию не могу что-то сказать.
Ответить
Валентин
Здравствуйте!
После команды:
Выдает следующее:
Signability test failed.
Errors:
22.9.8: Windows 7/Windows Server 2008 R2 file redistribution violation (\sdbus.sys —> sdbus.sys).
Не подскажете решение? Спасибо.
Ответить
Dmitry
Здравствуйте.
Решение не подскажу и причин не могу назвать самостоятельно… но: сейчас погуглил и на американских форумах пишут что суть такова: если пробовать подписать драйвер, который является системным драйвером Windows, то «это не разрешается» и будет та самая ошибка.
Ответить
Danil
Здравствуйте, на 10 пункте сначала выдавал ошибку о несоответствии даты в файлах .inf, после смены даты (по 12 пункту) и повторного запуска команды 10, командная строка начала выдавать ошибку:
Each driver package must be selected separately and must contain an installation INF.
\appack\vista32\sisagp.inf does not have NTAMD64 decorated model sections
\appack\win7_32\sisagp.inf does not have NTAMD64 decorated model sections
Не подскажите что нужно сделать?
Ответить
Dmitry
Здравствуйте.
В секции Manufacturer есть строка
после знака равно измените то, что там есть на
Но: есть риск, что не сработает или после установки работать драйвер не будет.
Ответить
RenMag
Вроде все подписалось,но только по
Но вот 10 винда все равно ругается на отсутствие подписи
Все процедуры делал на ноуте с 7 виндой
Ответить
Марк
Здравствуйте, при открытии inf2cat пишет «Невозможно запустить приложение на вашем ПК», что делать?
Ответить
Green
В Windows 10 не работает!
C:\Users\green>cd «C:\Program Failes\Microsoft SDKs\Windows\v7.1\bin»
Системе не удается найти указанный путь.
C:\Users\green>makecert -r -sv C:\cert\driver.pvk -n CN=»remontka» C:\cert\driver.cer
«makecert» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
И далее в том же духе.
Ответить
Green
Извиняюсь за предшествующий комментарий, запустил от имени админа и все заработало! Драйвер подписался и установился, только оборудование не заработало.
Ответить
MishaK20
Как быть, если нет inf файла, а есть только sys файл?
Система Widnows 11. Установил драйвера, в системном журнале ошибка: служба является зависимой от другой, которая не имеет цифровой подписи, поэтому она не запущена.
Служба запускается, если перезагрузиться в особые параметры загрузки с отключением цифровой подписи.
Так, вот, как мне подписать только sys файл, т.к. inf я не знаю где лежит, а установщик был в виде exe.
Ошибка возникает на 10-м этапе — вводе команы: inf2cat.exe /driver:»C:\cert\drv» /os:7_X64 /verbose, ошибка: Signability test failed.
Errors:
No installation INF found in the root path of the driver. For the driver to be digitally signed, and for it to install properly the installation inf must be in the root of each driver path you have provided. If you have separate folders with different driver packages for different languages, operating systems or device categories then specify each driver set as a separate driver. Each driver package must be selected separately and must contain an installation INF.
Просит inf файл. Но у меня драйвер уже стоит, надо только обойти подпись, ставить мне его не надо. Подскажите как файл без inf файла подписать? Спасибо)
Ответить
Андрей
такая ошибка File not found: C:\cert\driver.pfx, после команды signtool sign. что делать ,подскажите очень надо подписать драйвер на сетевуху
Ответить
Андрей
извиняюсь все ок. подписалось.
Ответить
Дмитрий
Здравствуйте. Пытаюсь подписать драйвер для usb наушников. Подскажите, что на что нужно изменить в самом *.inf
inf2cat.exe /driver:»C:\cert\drv» /os:7_X86 /verbose
Processing directory (C:\cert\drv\) file (wdma_usb.inf)
Parsing INF: C:\cert\drv\wdma_usb.inf
Signability test failed.
Ответить
Dmitry
Здравствуйте
Я посмотрел лог приложенный вами и насколько понял, основная проблема — почему-то не может добраться до файла драйвера .sys — либо в inf указаны неверные пути к нему, либо его просто нет (а должен быть)
Ответить
Сергей
Добрый день. Что делать если inf много и они распиханы по папкам. В частности с драйвером Nvidia.
Ответить
Данил
После подписи драйвера такая вот ошибка
Драйвер для данного устройства может быть поврежден, или в системе недостаточно памяти или иных ресурсов. (Код 3)
Ответить
Евгений
сначала хотел изменить ос на 10х64. не прокатило.
теперь стопор — нет драйвера или не верный формат. бида! по ходу челику придется каждый раз лезть под капот и вырубать подпись по Ф7…
inf2cat.exe /driver:»d:\cert\driver» /os:7_X64 /verbose
Processing directory (d:\cert\driver\) file (ncadptpci(pcimc-6a).inf)
Processing directory (d:\cert\driver\) file (whnc6a_64.sys)
Parsing INF: d:\cert\driver\ncadptpci(pcimc-6a).inf
Finished parsing INFs
Processing INF: d:\cert\driver\ncadptpci(pcimc-6a).inf
Finished processing INFs
Testing driver package…
Signability test failed.
Errors:
22.9.6: DriverVer missing or in incorrect format in \ncadptpci(pcimc-6a).inf
Warnings:
None
Ответить