Как подписать драйвер Windows 10, 8.1 и Windows 7 x64 и x86

Как самостоятельно подписать драйвер WindowsWindows 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, при этом в инструкции не потребуется вдаваться в некоторые дополнительные нюансы.

Процесс самостоятельной подписи драйвера

В процессе для того, чтобы подписать драйвер самостоятельно, нам потребуется: создать сертификат, подписать драйвер этим сертификатом, установить сертификат в системе и установить драйвер. Начнем.

  1. Создайте в корне диска C какую-либо папку (так к ней проще будет обращаться в дальнейшем), например, C:\cert, где мы будем работать с сертификатами и драйверами.
  2. Запустите командную строку от имени администратора (нужны для 18-го шага). Далее используем следующие команды по порядку. Файлы драйвера пока не потребуются. Во время выполнения второй команды вас попросят ввести пароль, я использую password в окне запроса и далее в командах, вы можете использовать свой.
  3. cd "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin"
  4. makecert -r -sv C:\cert\driver.pvk -n CN="remontka" C:\cert\driver.cer
  5. cert2spc C:\cert\driver.cer C:\cert\driver.spc
  6. pvk2pfx -pvk C:\cert\driver.pvk -pi password -spc C:\cert\driver.spc -pfx C:\cert\driver.pfx -po password
  7. До этого этапа всё должно пройти как на скриншоте ниже, командную строку не закрываем. Создание файла сертификата для подписи драйвера
  8. В папке C:\cert создайте вложенную папку, например, drv и поместите туда свои файлы драйвера. Но: если вам требуется драйвер только для x64, не копируйте .inf файл для x86 систем в эту папку и наоборот. файлы драйвера для подписыванияВ командной строке используем следующие команды:
  9. cd C:\WinDDK\7600.16385.1\bin\selfsign\
  10. inf2cat.exe /driver:"C:\cert\drv" /os:7_X64 /verbose
  11. В предыдущей команде для драйвера 32-бит укажите X86 вместо X64. Если будет предложено скачать .NET Framework, согласитесь, установите, а затем заново выполните команду. В идеале вы должны будете получить сообщение об успешном создании .cat файла для подписи. Однако, возможны ошибки, о наиболее частых — следующие два пункта. После исправления ошибок повторите команду из пункта 10.
  12. DriverVer set to incorrect date — возникает при дате в файле драйвера до 21 апреля 2009 года. Решение: откройте файл .inf из папки drv в текстовом редакторе (можно в блокноте) и в строке DriverVer установите другую дату (формат: месяц/день/год).
  13. Missing AMD64 CatalogFile entry (для 64-бит) или Missing 32-bit CatalogFile entry. Решение: откройте файл .inf из папки drv в текстовом редакторе и в разделе [Version] добавьте строку CatalogFile=catalog.cat
  14. В итоге вы должны получить сообщение: Catalog generation complete с указанием пути к файлу каталога, в моем случае – C:\cert\drv\catalog.cat. Далее используем следующие команды (требуется подключение к Интернету). Файл каталога создан успешно
  15. cd "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin"
  16. signtool sign /f C:\cert\driver.pfx /p password /t http://timestamp.verisign.com/scripts/timestamp.dll /v C:\cert\drv\catalog.cat
  17. Результат подписи файла драйвера без ошибок на скриншоте ниже. Следующий шаг — добавить самоподписанный сертификат в список доверенных в системе, сделать это можно следующими двумя командами по порядку Подписать драйвер с помощью signtool
  18. certmgr.exe -add C:\cert\driver.cer -s -r localMachine ROOT
    certmgr.exe -add C:\cert\driver.cer -s -r localMachine TRUSTEDPUBLISHER
  19. В результате вы должны получить сообщение «CertMgr Succeeded». Если Failed или certmgr.exe не является внутренней или внешней командой — убедитесь, что командная строка запущена от имени администратора, а вы находитесь в нужной папке (см. 15 шаг).

И вот теперь можно закрыть командную строку и установить драйвер из папки C:\cert\drv с помощью диспетчера устройств, или нажав правой кнопкой по .inf файлу и выбрав пункт «Установить». Потребуется подтвердить установку драйвера в окне «Не удалось проверить издателя этих драйверов» — нажать «Все равно установить этот драйвер».

Установка самостоятельно подписанного драйвера

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

Комментарии (87) к Как подписать драйвер Windows 10, 8.1 и Windows 7 x64 и x86

  • Nazer92

    Спасибо за инструкцию, имеется вебка A4Tech PK-52MF драйвера на х64 не ставятся (хоть с диска в комплекте) делал поэтапно, столкнулся с ошибкой, была на :

    signtool sign /f C:\cert\driver.pfx /p password /t http://timestamp.verisign.com/scripts/timestamp.dll /v C:\cert\drv\catalog.cat

    «SignTool Error: An unexpected internal error has occurred.
    Error information: «SignerTimeStamp() failed.» (-2147012865/0x80072eff)»
    Заменил на

    http://timestamp.globalsign.com/scripts/timstamp.dll

    , прошло успешно.
    В итоге драйвер подписался, установился но в состоянии устройства писало : Не удается проверить цифровую подпись драйверов необходимых для данного устройства.. могла быть произведена установка неправильно подписаного или повреждённого файла либо вредоносной программы неивз.происхождения (код 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 заметил верно, но предложенный им вариант не работает

    http://tsa.starfieldtech.com
    http://timestamp.globalsign.com/scripts/timstamp.dll
    http://timestamp.comodoca.com/authenticode
    http://www.startssl.com/timestamp
    http://timestamp.verisign.com/scripts/timstamp.dll
    

    Ответить

    • Юрий

      У меня заработал только этот, я проверял вообще все что нашёл в сети

      http://timestamp.comodoca.com/authenticode

      Ответить

  • Юрий

    Спасибо за инструкцию, хотя пути файлов у меня другие, но сами команды правильные, и сервер временной метки заработал у меня другой, не тот что в статье, а так всё доступно и понятно!

    Ответить

  • Владимир

    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.
        Как вы и писали

        inf2cat.exe /driver:"C:\cert\drv" /os:7_X64 /verbose

        Ответить

  • Владимир

    C:\WinDDK\7600.16385.1\bin\selfsign>inf2cat.exe /driver:"C:\cert\drv" /os:7_X86 /verbose

    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
      Да, я прочел комментарий, что всё на месте, но точнее вот так не видя ситуацию не могу что-то сказать.

      Ответить

  • Валентин

    Здравствуйте!
    После команды:

    inf2cat.exe /driver:"C:\cert\drv" /os:7_X86 /verbose

    Выдает следующее:
    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 есть строка

      %ManufacturerName%=

      после знака равно измените то, что там есть на

      =Standard,NTx86,NTAMD64

      Но: есть риск, что не сработает или после установки работать драйвер не будет.

      Ответить

  • RenMag

    Вроде все подписалось,но только по

    http://timestamp.comodoca.com/authenticode

    Но вот 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)

    Ответить

Оставить комментарий

Интересное
Список инструкций Windows 11 Windows 10 Подписаться