Как подписать драйвер 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).

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

      Ответить

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

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