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


cd C:\WinDDK\7600.16385.1\bin\selfsign\
inf2cat.exe /driver:"C:\cert\drv" /os:7_X64 /verbose
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
И вот теперь можно закрыть командную строку и установить драйвер из папки C:\cert\drv с помощью диспетчера устройств, или нажав правой кнопкой по .inf файлу и выбрав пункт «Установить». Потребуется подтвердить установку драйвера в окне «Не удалось проверить издателя этих драйверов» — нажать «Все равно установить этот драйвер».
Обратите внимание, что возможные ошибки в диспетчере устройств, отображаемые для устройства с самостоятельно подписанным драйвером обычно не имеют отношения непосредственно к процессу подписи (та же ошибка для них будет появляться и без подписи, при простом отключении проверки цифровой подписи драйверов в особых вариантах загрузки). Т.е. искать причину в этом случае нужно в чем-то ещё и читать подробную инструкцию по использованию драйвера (например, в случае драйверов для FlashTool).
А вдруг и это будет интересно:
- Лучшие бесплатные программы для Windows
- Как разрешить обычному пользователю запускать программу от имени Администратора без ввода пароля
- Как выйти из полноэкранного режима в Windows
- Как включить компактный вид панели быстрых настроек Windows 11
- Шрифты в интерфейсе Chrome стали более жирными и размытыми — как исправить?
- Msftconnecttest.com — что это и как исправить возможные ошибки
- Windows 11
- Windows 10
- Android
- Загрузочная флешка
- Лечение вирусов
- Восстановление данных
- Установка с флешки
- Настройка роутера
- Всё про Windows
- В контакте
- Одноклассники
-
Nazer92 10.01.2021 в 13:40
Спасибо за инструкцию, имеется вебка 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
- Dmitry 11.01.2021 в 14:17
- Nazer92 11.01.2021 в 18:55
У кого выходит ошибка на последнем шаге «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
- Юрий 29.05.2021 в 15:35
У меня заработал только этот, я проверял вообще все что нашёл в сети
http://timestamp.comodoca.com/authenticode
- Dmitry 16.07.2021 в 15:52
- Владимир 16.07.2021 в 16:29
Так я и скопировал их с С:\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
- Dmitry 16.07.2021 в 20:08
Здравствуйте!
После команды:
inf2cat.exe /driver:"C:\cert\drv" /os:7_X86 /verbose
- Dmitry 14.09.2021 в 19:32
- Dmitry 05.10.2021 в 21:13
Здравствуйте.
В секции Manufacturer есть строка
%ManufacturerName%=
после знака равно измените то, что там есть на
=Standard,NTx86,NTAMD64
Вроде все подписалось,но только по
http://timestamp.comodoca.com/authenticode
- Green 05.01.2023 в 04:34
Как подписать драйвер Windows 7 x64
Из соображений безопасности для загрузки 64-разрядных версий Windows Vista и более поздних версий требуется наличие цифровой подписи драйверов. Эта строгая политика подписи драйверов приводит к одному из следующих результатов:
- Драйвер должен содержать встроенную подпись драйвера.
- Драйвер должен распространяться вместе с INF-файлом и подписанным файлом каталога.
В целях разработки и тестирования требование подписи можно обойти несколькими способами. В этом руководстве основное внимание уделяется использованию тестового сертификата и тестового режима для установки и загрузки самозаверяющих драйверов.
- Windows 7 x64. (бесплатная загрузка из Центра загрузки Майкрософт).
После того, как вы ознакомитесь с инструментами для подписи драйверов и требованиями, вы сможете обновить предыдущую конфигурацию для других платформ.
Загрузите ISO-файл WDK, распакуйте его на жесткий диск (я рекомендую использовать 7-Zip), затем запустите KitSetup.exe, чтобы установить его в C:\WinDDK\7600.16385.1. \ (папка по умолчанию).
Моя рабочая папка — C:\Briolidz\MyDrivers.
Тестовый режим позволяет загружать любой тип кода режима ядра с тестовой подписью, добавляя параметр конфигурации загрузки TESTSIGNING.
Чтобы активировать тестовый режим, вам необходимо запустить командную строку с правами администратора, а затем выполнить следующую команду (используйте переключатель off, чтобы отключить ее):
Перезагрузите компьютер, чтобы изменения вступили в силу.
После перезагрузки вы заметите, что водяной знак тестового режима присутствует на рабочем столе. Если вы не можете видеть этот водяной знак, вы можете удалить его с помощью функции «Удалить водяные знаки». Я настоятельно рекомендую создать резервную копию исходного файла user32.dll.mui в вашей системе, прежде чем он будет исправлен.
– Откройте с правами администратора командную строку WDK: Пуск -> Наборы драйверов Windows -> WDK 7600.16385.1 -> Среды сборки -> Windows 7 -> Бесплатная среда сборки x64 . Затем перейдите в рабочую папку:
– Убедитесь, что сертификат правильно установлен в «Хранилище сертификатов Briolidz» -> Сертификаты:
– Подпишите драйвер (например, MyDriverNoInf.sys) сертификатом:
– Проверка подлинности подписанного драйвера:
– Перейдите в рабочую папку и откройте файл INF (например, MyDriverWithInf.inf) в текстовом редакторе:
Убедитесь, что в разделе [версия] есть запись, указывающая файл .cat (см. ключ «CatalogFile»). Также убедитесь, что формат даты правильный. Ниже образец:
– Создать файл .cat (каталог):
CAT-файлы — это файлы каталогов, содержащие информацию о пакете драйверов. Их необходимо сгенерировать из файлов INF, чтобы можно было выполнить подписание.
При успешном запуске будет создан файл MyDriverWithInf.cat (обратите внимание, что в файле CAT для установки указана Windows 7 x64). Обновите переключатель «/os», чтобы настроить его на другие операционные системы.
– Подпишите файл каталога:
– Некоторые драйверы имеют несколько INF-файлов. Они могут находиться в папке драйвера или в его подпапках. В этом случае НЕОБХОДИМО ПОВТОРИТЬ ПРЕДЫДУЩИЕ КОМАНДЫ для каждого INF-файла.
Начиная с Windows 10 версии 1607, Windows не будет загружать новые драйверы режима ядра, не подписанные порталом разработки. Чтобы получить подписанный драйвер, сначала зарегистрируйтесь в программе Windows Hardware Dev Center. Обратите внимание, что для создания учетной записи панели мониторинга требуется сертификат подписи кода EV.
Существует множество способов отправки драйверов на портал. Для производственных драйверов вы должны отправить журналы тестирования HLK/HCK, как описано ниже. Для тестирования только на клиентских системах Windows 10 вы можете отправить свои драйверы для аттестационной подписи, которая не требует тестирования HLK. Или вы можете отправить свой драйвер для тестовой подписи, как описано на странице отправки нового оборудования.
Исключения
Драйверы с перекрестной подписью по-прежнему разрешены, если выполняется одно из следующих условий:
- Компьютер был обновлен с более ранней версии Windows до Windows 10 версии 1607.
- Безопасная загрузка отключена в BIOS.
- Драйверы были подписаны сертификатом конечного объекта, выпущенным до 29 июля 2015 года, который привязан к поддерживаемому ЦС с перекрестной подписью.
Чтобы система не загружалась должным образом, загрузочные драйверы не будут блокироваться, но будут удалены помощником по совместимости программ.
Подписание драйвера для клиентских версий Windows
Чтобы подписать драйвер для Windows 10, выполните следующие действия:
- Для каждой версии Windows 10, которую вы хотите сертифицировать, загрузите Windows HLK (Hardware Lab Kit) для этой версии и запустите полный сертификат на клиенте для этой версии. Вы получите один журнал для каждой версии.
- Если у вас несколько журналов, объедините их в один, используя самый последний HLK.
- Отправьте свой драйвер и объединенные результаты теста HLK на портал информационной панели Windows Hardware Developer Center.
Для получения подробной информации о конкретной версии ознакомьтесь с политикой WHCP (Программа совместимости оборудования Windows) для версий Windows, на которые вы хотите настроить таргетинг.
Чтобы подписать драйвер для Windows 7, Windows 8 или Windows 8.1, используйте соответствующий HCK (комплект сертификации оборудования). Дополнительные сведения см. в Руководстве пользователя комплекта сертификации оборудования для Windows.
Подписание драйвера для более ранних версий Windows
До Windows 10 версии 1607 для следующих типов драйверов требовался сертификат Authenticode, используемый вместе с перекрестным сертификатом Microsoft для перекрестной подписи:
- Драйверы устройств в режиме ядра
- Драйверы устройств пользовательского режима
- Драйверы для потоковой передачи защищенного контента. Сюда входят аудиодрайверы, использующие защищенный аудиорежим пользователя (PUMA) и защищенный аудиопуть (PAP), а также драйверы видеоустройств, которые обрабатывают команды управления защитой защищенного видеопути-вывода (PVP-OPM). Дополнительную информацию см. в разделе Подписание кода для защищенных мультимедийных компонентов.
Требования к подписи по версии
В следующей таблице показаны политики подписи для версий клиентских операционных систем.
Обратите внимание, что безопасная загрузка не применяется к Windows Vista и Windows 7.
Применимо к: | Windows Vista, Windows 7; Windows 8+ с отключенной безопасной загрузкой | Windows 8, Windows 8.1, Windows 10, версии 1507, 1511 с включенной безопасной загрузкой | Windows 10, версии 1607, 1703, 1709 с безопасной загрузкой в | Windows 10 версии 1803+ с безопасной загрузкой |
---|---|---|---|---|
Архитектуры: | 64- только бит, подпись не требуется для 32-разрядных | 64-разрядных, 32-разрядных | 64-разрядных, 32-разрядных | 64-разрядных, 32 -bit |
Требуется подпись: | Встроенный файл или файл каталога | Встроенный файл или файл каталога | Встроенный или файл каталога | Встроенный файл или файл каталога |
Алгоритм подписи: | SHA2 | SHA2 | SHA2 | SHA2 |
Сертификат: | Стандартные корни, которым доверяет целостность кода | Стандартные корни доверяет целостности кода | Корневой центр Microsoft 2010, Корневой центр сертификации Microsoft, Корневой центр Microsoft | Корневой центр Microsoft 2010, Корневой центр сертификации Microsoft, Mi Крософт Корневой центр |
Помимо подписи кода драйвера, для установки драйвера также необходимо выполнить требования к подписи устройства PnP. Дополнительную информацию см. в статье Требования к подписи для установки устройства Plug and Play (PnP).
Что такое драйверы с цифровой подписью? Драйверы с цифровой подписью — это подписанные драйверы от своих поставщиков, которые обеспечивают целостность драйвера и контрольную сумму, чтобы гарантировать, что устанавливаемый файл драйвера не будет изменен каким-либо образом, кроме того, что разрешено или изменено центром подписи.
Ошибка «Windows требует драйвер с цифровой подписью» возникает, когда Windows блокирует установку драйвера, если он не имеет цифровой подписи.
Как исправить Windows, для которой требуется драйвер с цифровой подписью
Windows позволяет продолжить установку, отключив проверку цифровой подписи, что не рекомендуется, но иногда необходимо, когда драйвер не подписан, но является оригинальным драйвером. Мы собрали и протестировали несколько исправлений, которые устранят эту проблему. Это руководство относится к устранению ошибки «Требуется драйвер с цифровой подписью» в Windows 10, Windows 8 или Windows 7
Отключить подписывание драйверов
Подписание драйверов, как упоминалось ранее, включено по умолчанию в операционной системе Windows, чтобы гарантировать, что на вашем компьютере не установлено вредоносное программное обеспечение, замаскированное под драйверы. Это добавляет дополнительный уровень безопасности для вашего компьютера. Однако, если это вызывает ошибки и не позволяет установить сторонние драйверы, вы можете отключить подписывание драйверов, выполнив следующие действия:
- Нажмите Windows + R, введите «gpedit.msc» в диалоговом окне и нажмите Enter.
- В редакторе групповой политики перейдите по следующему пути:
- Выберите параметр «Включено» и в раскрывающемся списке выберите «Игнорировать» (в разделе «Когда Windows обнаруживает файл без драйверов»).
- Нажмите OK, чтобы сохранить изменения и выйти. Теперь проверьте, решена ли проблема.
Включение TESTSIGNING
TESTSIGNING определяет, будет ли Windows устанавливать какой-либо код режима ядра с тестовой подписью, который не имеет цифровой подписи соответствующих компаний-разработчиков программного обеспечения. Это еще одна надежная защита, которая действует как брандмауэр, предотвращая установку любых драйверов уровня ядра, если они не находятся в белом списке. Если вы действительно хотите установить драйвер, несмотря на меры безопасности Windows, вы можете включить TESTSIGNING.
- Нажмите Windows + S, введите «командная строка» в диалоговом окне, щелкните приложение правой кнопкой мыши и выберите «Запуск от имени администратора».
- В командной строке выполните следующую команду:
- Теперь правильно перезагрузите компьютер. После перезапуска снова войдите в систему и попробуйте установить драйвер.
- Если вы когда-нибудь захотите отключить тестовый режим, выполните следующую команду:
Постоянное отключение принудительной подписи драйверов
Еще один вариант, который вы можете попробовать, если все вышеперечисленные методы не сработали, — это постоянное отключение проверки подписи драйверов на вашем компьютере. Вам придется вручную снова включить механизм, и никаких предохранителей для драйверов, установленных на вашем компьютере, не будет. Убедитесь, что вы используете этот метод в крайнем случае.
- Нажмите Windows + R, введите «командная строка» в диалоговом окне, щелкните приложение правой кнопкой мыши и выберите «Запуск от имени администратора».
- В командной строке выполните следующую команду:
Полностью перезагрузите компьютер и попробуйте установить драйвер.
- Если вы когда-нибудь захотите снова включить принудительный механизм, выполните следующую команду:
Примечание. Обычно все проверенные и подлинные драйверы имеют цифровую подпись. Перед установкой убедитесь, что вы полностью уверены в драйвере.
У меня есть драйвер режима ядра, и мне нужно установить t в 64-разрядной версии Windows 7. Он должен иметь цифровую подпись. Я поставил цифровую подпись с помощью dseo13b.exe. Но когда я загружаю драйвер, я получаю сообщение об ошибке в журнале системных событий:
Драйвер не запустился из-за следующей ошибки:
Windows не может проверить цифровую подпись для этого файла. В результате недавних изменений в оборудовании или программном обеспечении мог быть установлен неправильно подписанный или поврежденный файл, либо это могло быть вредоносное ПО из неизвестного источника.Я не хочу использовать режим тестовой подписи. Как решить эту проблему? Нужно ли мне получать сертификат от Microsoft?
Я разработал драйвер и сейчас заставляю его работать на 64-битной машине.
Я думаю, что это действительно актуальный вопрос для разработчиков драйверов — речь идет о среде разработки. Чем это отличается от вопросов о «сделать»? Таким образом, повторное голосование.
3 ответа 3
Только для 64-битных сборок: настройка самоподписания
Часть 1: создание и установка тестового сертификата
- Запустите оболочку командной строки с повышенными привилегиями (Vista и более поздние версии).
- makecert.exe -r -pe -ss my -n «CN=MyTestCertificate» mytestcert.cer
- certmgr.exe -add mytestcert.cer -s -r localMachine root
- Запустите certmgr.exe и убедитесь, что «MyTestCertificate» указан как в разделе «Личные», так и в разделе «Доверенные корневые центры сертификации».
- Храните файл mytestcert.cer в надежном месте.
Часть 2. Настройка системы для запуска тестового подписанного кода (Vista и более поздние версии)
- Запустите оболочку командной строки с повышенными привилегиями (Vista и более поздние версии).
- Запустите Bcdedit.exe -set TESTSIGNING ON в командной строке cmd.exe с повышенными привилегиями.
- certmgr.exe -add mytestcert.cer -s -r localMachine root
- certmgr.exe -add mytestcert.cer -s -r localMachine trustpublisher
- Перезагрузить.
- Vista: «Тестовый режим» появится во всех четырех углах рабочего стола, а «Microsoft (R) Windows (R) (сборка 6000)» — вверху. Windows 7: в правом нижнем углу появится надпись «Тестовый режим Windows 7Build 7600».
Два полезных ресурса для подписи драйверов
1. Получите сертификат RSA (Digicert или Verisign или где угодно в рамках вашего бюджета) или создайте сертификат самостоятельно, если вам нужно установить его только на свой компьютер
2.Когда у вас есть сертификат, у вас также будет закрытый ключ
3. Чтобы распространять драйвер, вам нужен этот сертификат, чтобы его можно было отследить, Microsoft использует систему под названием Trusted Root Certification Authority. Теперь есть и другие центры, которые выдают сертификаты помимо этих, но им потребуется обновление Windows для их проверки. введите certmgr.msc, чтобы получить список. И ищите тех, у кого есть разрешение на подпись кода
4.Либо добавьте сертификат в этот список, либо получите сертификат из этого списка
5.Подпишите драйвер сертификатом[подробности в ссылках выше]
6.Теперь распространите драйвер
В Интернете есть много руководств по подписанию драйвера. NB: WHQL — это дорогой вариант, который вы можете рассмотреть, если ваша компания сможет заплатить
Читайте также:
- Как установить драйвер mtp на Windows XP
- Как удалить драйверы dualshock 4 из Windows 10
- Настройка сети Suse linux
- Mac OS Catalina что это такое
- Система ядра Nt загружает систему Windows 10
Подписываем драйвер в Windows 7
Перед началом инструкций отметим, что иногда бывает проще отключить проверку цифровых подписей в операционной системе, нежели вручную подписывать драйвер. К тому же есть и альтернативные варианты инсталляции неподписанного ПО, о чем более детально читайте в других руководствах на нашем сайте, воспользовавшись ссылками ниже.
Подробнее:
Отключение проверки цифровой подписи драйверов в Windows 7
Установка драйвера без проверки цифровой подписи в WindowsСпособ 1: Импорт цифровой подписи
Первый вариант подходит тем пользователям, кто собирается устанавливать его в операционную систему только один раз и не заинтересован в дальнейшем распространении. Этот способ лучше всего использовать в тех ситуациях, когда вы скачали драйвер, но оказалось, что он не подписан и инсталлировать его не получается. Тогда от вас требуется перенести его конфигурацию в Windows 7, что осуществляется так:
-
Перейдите в папку с драйвером и отыщите там файл формата INF, который и должен быть установлен в ОС. Щелкните по нему ПКМ, чтобы вызвать контекстное меню.
Теперь драйвер считается зарегистрированным. Если инсталляция остальных компонентов должна происходить при помощи исполняемого файла, перейдите в каталог с программным обеспечением и запустите его, чтобы завершить установку.
Способ 2: Ручное создание подписи
Этот способ более сложный, поэтому пришлось даже разделить его на этапы во избежание проблем с пониманием. Его суть заключается в использовании фирменных средств разработчика от Microsoft, чтобы создать подпись для пользовательского драйвера. Особое внимание этому методу стоит уделить тем, кто заинтересован в ручной разработке драйверов.
Шаг 1: Предварительные действия
Компания Майкрософт распространяет все необходимые утилиты в свободном доступе, однако по умолчанию они отсутствуют в Windows 7, поэтому сначала придется заняться их загрузкой и инсталляцией.
-
Откройте ссылку выше, чтобы открыть страницу скачивания Microsoft Windows SDK, где нажмите по кнопке «Download».
Сейчас уже существуют новые версии рассмотренных инструментов, но вам нужно загружать только те сборки, на которые мы оставили ссылки. Связано это с тем, что разработчики в новых версиях прекратили поддержку используемых далее утилит, что не позволит вручную подписать драйвер. Убедитесь в том, что все компоненты установлены, перезагрузите компьютер и переходите далее.
Шаг 2: Генерация ключа и сертификата
Сертификат необходим драйверу для того, чтобы определить его подлинность, а сгенерированные ключи обезопасят сам файл от несанкционированного изменения. Создание таких компонентов — обязательное условие от Microsoft, поэтому каждому пользователю придется выполнить следующие действия:
-
Запустите «Командную строку» от имени администратора.
Это был самый простой этап создания цифровой подписи для драйвера, в ходе которого практически никогда не возникает никаких ошибок. Однако если на экране отобразились какие-то предупреждающие уведомления, не игнорируйте их, читайте содержимое и исправляйте ситуацию в соответствии с находящимися там рекомендациями.
Шаг 3: Создание конфигурационного файла
Конфигурационный файл необходим каждому драйверу, ведь именно в нем и будут храниться основные сведения. В дальнейшем он может пригодиться, если, например, понадобится изменить дату последнего изменения или внести коррективы в название версии драйвера. Сначала понадобится обратиться в заранее созданную папку «DriverCert», куда перенесите файлы драйвера, для которого и создается подпись, выделив для них отдельный подкаталог. После запустите консоль и выполните такие действия:
-
Для использования следующей утилиты снова придется переместиться в папку с набором инструментов от Майкрософт, а для этого задействуйте команду cd C:\WinDDK\7600.16385.1\bin\selfsign .
Следите за состоянием «Командной строки» и ожидайте появления на экране уведомлений «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» .
Следуйте отобразившимся в графическом меню инструкциям, чтобы завершить подпись. На этом процесс считается оконченным, а подписанный драйвер остается только вручную установить, если это требуется.
Виктор Бухтеев Вам помогли мои советы?
Задайте вопрос или оставьте свое мнение Отменить комментарий
2 комментария
Аноним :22.9.3: Missing hardware ID (cannot have just compatible ID) in line %genericmtp
ip.devicedesc%=wpd.mtpip in section [generic.ntamd64] of \111\wpdmtp.inf
22.9.3: Missing hardware ID (cannot have just compatible ID) in line %genericmtp
ip.devicedesc%=wpd.mtpip.registration in section [generic.ntamd64] of \111\wpdmt
p.inf
22.9.3: Missing hardware ID (cannot have just compatible ID) in line %genericmtp
ip.devicedesc%=wpd.mtpip.registrationbasic in section [generic.ntamd64] of \111\
wpdmtp.infЧто с этим делать?
Аноним :
пояснение темы первокурсника по информатике обобщенность и повтор на всех сайтах на эту тему одно идно и то-же…..-нету четкости и собранности в тематике
Как подписать драйвер Windows с помощью самоподписанного сертификата?
15.02.2022
itpro
Windows 10, Windows 11, Windows 7, Windows Server 2019
комментариев 60
Все 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.
- WindowsSDK (или Microsoft Visual Studio 2005 или выше) для вашей версии Windows. В состав этих пакетов входит WindowsSDKSigningtoolsforDesktop, в которую включена необходимая нам утилита — 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(3)
$cert = New-SelfSignedCertificate -Subject «Winitpro” -Type CodeSigningCert -CertStoreLocation cert:\LocalMachine\My -notafter $add3yearЗатем нужно экспортировать данный сертификат в pfx файл с паролем:
$CertPassword = ConvertTo-SecureString -String “P@ss0wrd” -Force –AsPlainText
Export-PfxCertificate -Cert $cert -FilePath C:\DriverCert\myDrivers.pfx -Password $CertPasswordТеперь нужно добавить сертификат в доверенные корневые сертификаты и в сертификаты доверенных издателей:
$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Укажите пароль для ключа (например, P@ss0wrd ).
На основе созданного сертификата создайте публичный ключ для сертификата издателя ПО (PKCS).
cert2spc C:\DriverCert\myDrivers.cer C:\DriverCert\myDrivers.spc
Объедините публичный ключ (.spc) и персональный ключ (.pvk) в одном файле сертификата формата Personal Information Exchange (.pfx).
pvk2pfx -pvk C:\DriverCert\myDrivers.pvk -pi P@ss0wrd -spc C:\DriverCert\myDrivers.spc -pfx C:\DriverCert\myDrivers.pfx -po P@ss0wrd
Добавьте сертификат в доверенные:
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
Для исправления ошибки нужно в секции [Version] найти строку с DriverVer= и заменить ее на:
DriverVer=05/01/2009,9.9.9.9
Если у вас появится ошибка Missing AMD64 CatalogFile entry (для 64-бит) или Missing 32-bit CatalogFile entry . Нужно в секцию [Version] .inf файла добавить строку CatalogFile=xg20gr.cat .
Подписываем драйвер самоподписанным сертификатом
Перейдите в каталог:
cd «C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64»
Подпишите комплект файлов драйвера созданным сертификатом. В качестве сервиса таймстампа (штамп времени) воспользуемся ресурсом Globalsign. Следующая команда подпишет CAT файл цифровой подписью с помощью сертификата, хранящегося в PFX-файл, защищенном паролем.
signtool sign /f C:\DriverCert\myDrivers.pfx /p P@ss0wrd /t http://timestamp.globalsign.com/scripts/timstamp.dll /v «C:\DriverCert\xg\xg20gr.cat»
В современных версиях 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 sign /tr http://timestamp.digicert.com /td SHA256 /v /f C:\DriverCert\myDrivers.pfx /p P@ss0wrd «C:\DriverCert\xg\xg20gr.cat»
Если при выполнении команды появляется ошибка 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, вы установите драйвер в системе.
Если по каким-то причинам драйвер не устанавливается, подробный лог установки драйвера содержится в файле C:\Windows\inf\setupapi.dev.log. Этот лог позволит вам получить более подробную информацию об ошибке установки. В большинстве случаев возникает ошибка Driver package failed signature validation . Скорее всего это означает, что сертификат драйвера не добавлен в доверенные сертификаты.
Если установка драйвера прошла успешно, в файле 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: 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: 23:32:57.077
Драйверы Kernel-Mode и User-Mode
Напомню, что в Windows драйвер могут выполнятся либо в режиме ядра (kernel-mode), либо в режиме пользователя (user-mode). Драйверы режима ядра, подписанные таким образом не будут загружаться при загрузке Windows в режиме UEFI Secure Boot с ошибкой:
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Предыдущая статья Следующая статья