- Что такое подписанный драйвер?
- Генерируем cat файл драйвера
- Дебют или этап подготовки
- Отключение проверки цифровой подписи драйверов windows 8 и 8.1
- Подготовка и запуск проекта
- Подготовка парка машин
- Подготовка пула тестовых машин
- Пролог
- Создаем самоподписанный сертификат и закрытый ключ
- Способ 1: особые параметры загрузки windows
- Способ 2: «командная строка»
- Способ 3: «редактор групповой политики»
- Способ 3: редактор локальной групповой политики
- Установка драйвера, заверенного самоподписанным сертификатом
Что такое подписанный драйвер?
Подписанный драйвер — это драйвер устройства c цифровой подписью. Цифровая подпись — это электронная метка защиты, указывающая издателя программного обеспечения и изменения первоначального содержимого программного пакета драйвера. Если драйвер подписан издателем с подтверждением достоверности подписи центром сертификации, можно быть уверенным, что драйвер выпущен этим издателем и не подвергался изменениям.
Windows выдаст одно из следующих предупреждений: драйвер не подписан, достоверность подписи издателя не подтверждена центром сертификации, драйвер изменен с момента выпуска.
Коротко говоря если драйвер не был подписан компанией MicroSoft, то такой драйвер не будет иметь цифровой подписи драйверов для Windows. С таким драйвером и возникают проблемы при установке.
В данной статье рассмотрим как отключить проверку цифровой подписи драйверов в Windows 10, Windows 8 и 8.1, а также Windows 7.
https://www.youtube.com/watch?v=6IH0JpSWDTk
Содержание:
- Отключение проверки подписи драйверов Windows 10
- Отключение проверки подписи драйверов Windows 8.1 / 8
- Отключение проверки подписи драйверов Windows 7
Генерируем cat файл драйвера
Создадим каталог C:DriverCertxg и скопируем в него все файлы из каталога, в который первоначально был распакован архив с драйвером (c:toolsdrv1). Убедить что среди файлов имеются файлы с расширением .sys и .inf (в нашем случае xg20grp.sys и xg20gr).
Перейдем в каталог:
cd C:WinDDK7600.16385.1binselfsign
На основе inf файла с помощью утилиты inf2cat.exe (входит в состав Windows Driver Kit -WDK) сгенерируем для нашей платформы cat файл (содержит информацию о всех файлах пакета драйвера).
inf2cat.exe /driver:”C:DriverCertxg” /os:7_X64 /verbose
Чтобы убедитесь, что процедура прошла корректно, проверьте, что в логе присутствуют сообщения:
Signability test complete.иCatalog generation complete.
После выполнения команды в каталоге драйвера должен обновиться файл g20gr.cat
Дебют или этап подготовки
Очевидным предварительным условием для сертификации является наличие следующего:
Файлы .sys и .cat должны быть подписаны EV сертификатом. Для этого используется утилита singtool из Windows SDK.
В нашем случае файлы .inf, .sys, .map, .pdb и .cat представлены в двух экземплярах для архитектур x86 и x64 соответственно.
Первым шагом к сертификации драйвера является прохождение серии тестов на совместимость оборудования для Windows. Для этих целей Microsoft предоставляет специализированный фреймворк Windows Hardware Lab Kit , ранее называвшийся Windows Hardware Certification Kit (HCK).
А еще ранее этот же фреймворк носил имя Windows Hardware Logo Kit, что доставляет неудобство в поиске информации, так как по запросу HLK нередко выпадает устаревшая. С кратким обзором концепции тестирования можно ознакомиться по ссылке .
Отключение проверки цифровой подписи драйверов windows 8 и 8.1
Аналогичным способом можно произвести загрузку Windows 8 и 8.1 без обязательной проверки цифровых подписей драйверов:
- Подвести курсор мыши к правому краю экрана;
- Выбрать опцию «Изменение параметров компьютера»;
- Нажать «Обновление и восстановление»;
- Перейти в «Восстановление»;
- Нажать «Перезагрузить сейчас»;
- В процессе перезагрузки выбрать раздел «Диагностика»;
- Затем — «Дополнительные параметры»;
- Выбрать «Параметры загрузки»;
- Нажать кнопку «Перезагрузить»;
- После повторной перезагрузки необходимо нажать F7, или другую клавишу F*, которая соответствует номеру с пунктом «Отключить обязательную проверку подписи драйверов».
Подготовка и запуск проекта
На странице Projects выбираем Create project и задаем проекту произвольное имя. Активируем проект двойным кликом по нему. Каждый проект может тестироваться только на машинах одной битности.
На странице Selection выбираем пул машин, на котором будет производиться тестирование. В списке отобразятся устройства, подключенные к машинам из этого пула. Отмечаем устройства, которые будут тестироваться.
Переходим на страницу Tests. Перед запуском тестов применяем плейлист нужной версии, распакованный из архива ранее. Отмечаем тесты, которые будут запущены для устройства. Следует обратить внимание, что некоторые тесты проходят в ручном режиме (обозначены иконкой человечка в столбце Type) и требуют некоторого пользовательского ввода на стороне клиентской машины. Их лучше отложить на потом и сначала отметить все автоматические.
Несмотря на всю подготовительную работу, некоторые тесты все же могут завершаться с ошибками, несвязанными напрямую с качеством тестируемого драйвера. Некоторые из них успешно проходятся со второй попытки. Успех выполнения других, в том числе весьма продолжительные тесты Concurrent Hardware And Operating System , по результатам наблюдений может зависеть от аппаратной начинки клиента. Логи результатов тестирования – основной помощник выявления проблем. Посмотреть их можно на странице Results.
Финальный пакет – это файл с расширением .hlkx (zip-архив), который содержит результаты тестирования. Именно его нужно сабмитить в Microsoft через Partner Dashboard для получения цифровой подписи Microsoft Windows Hardware Compatibility Publisher.
При его создании необходимо указать:
- Путь к директории с драйвером (в директории должны находиться inf/sys/cat файлы);
- Путь к директории с отладочными символами (pdb/map).
После нажатия на “Create Package” потребуется отметить:
- Целевые ОС;
- Locales (отмечаем English).
Подготовка парка машин
Для серверной части HLK ограничением является необходимость развертывания на Windows Server 2021, Windows Server 2021 R2 или Windows Server 2021.
Начиная с релиза 1709 HLK поддерживает тестирование клиентов только соответствующей версии Windows 10 , предыдущие редакции кита предусматривали возможность работы с некоторым подмножеством обновлений этой операционной системы.
Табличка поддерживаемых версий:
HLK version | Supported version | Accepted device/component | Accepted system |
---|---|---|---|
1803 | 1803 – Client | 1803 Client Device/Component | 1803 Client Systems |
1709 | 1709 – Client | 1709 Client Device/Component | 1709 Client Systems |
1703 | 1703 – Client | 1703 Client Device/Component | 1703 Client Systems |
1607 – Client | 1607 Client Device/Component | ||
1607 | 1607 – Client | 1607 Client Device/Component | 1607 Server Systems |
1607 – Server, Azure Stack, SDDC | 1607 Server Device/Component | ||
1511 – Client | 1511 Client Device/Component |
Для организации тестирования нам понадобятся одна управляющая машина с серверной версией Windows и две тестовые машины с 32 и 64-битными версиями Windows 10 в одной сети. При наличии нескольких доступных клиентов одной битности их можно использовать совместно, проводя тестирование параллельно.
Альтернативной конфигурацией, в случае тестирования драйвера для двух архитектур, может быть схема с одним контроллером и одним клиентом (предполагается смена ОС клиента между тестовыми сессиями). Однако в этом случае возможны проблемы с настройкой пулов тестовых машин и потерей результатов тестирования. Кто виноват и что делать в такой ситуации будет рассказано ниже.
Подготовка пула тестовых машин
Пришло время подготовить пулы наших клиентских машин. Они нам понадобятся на этапе создания проекта. На вкладке Configuration все машины отобразятся в Default Pool. Нужно создать свои пулы (кнопка Create Machine Pool) и перетащить в них машины из пула по-умолчанию.
Важно: в одном пуле должны находиться машины с одинаковой битностью.
Поле Status у каждой машины будет Not Ready – нужно щелкнуть по ним правой кнопкой и изменить статус на Ready.
Важно: иногда студия выдает ошибку на попытку изменить статус машины.
Кроме прочего, такая ситуация появляется, когда меняется ОС на тестовом клиенте, например, в схеме с одним контроллером и одним клиентом. Решается это удалением машины из пула (пункт Delete Machine в контекстном меню), что заставляет контроллер создать новый инстанс клиента с правильными характеристиками в Defaul Pool.
Внимание, удаление машины приводит к удалению всех ассоциированных с ней результатов тестирования. Во избежание напрасной потери результатов нескольких часов работы, перед удалением машины следует подготовить финальный hlkx пакет, включающий все пройденные тесты. О подготовке файла hlkx будет рассказано далее.
Пролог
Начиная с версии Windows 10 1607 корпорация Microsoft ввела обязательную сертификацию сторонних драйверов по программе Windows Hardware Compatibility Program (новость об этом в блоге msdn , пост на хабре ). Работает это нововведение на чистых установках Windows 10 соответствующей версии с включенным режимом Secure Boot .
Несоблюдение этого условия в лучшем случае (при отключенном Secure Boot) приведет к появлению предупреждения:
В худшем – к запрету на установку драйвера:
Несмотря на наличие официальной документации по прохождению процедуры сертификации, этот процесс может быть сопровожден рядом неочевидных на первый взгляд сложностей. Ниже приводится поэтапный разбор всех подводных камней на примере прохождения сертификации драйвера веб-камеры для 32 и 64-битной версий Windows 10 с обновлением 1803.
Краткий обзор всей последовательности действий:
- Подготовка парка машин
- Развертывание тестового фреймворка Windows Hardware Lab Kit
- Создание и конфигурация тестового проекта
- Прохождение списка тестов
- Подготовка финального пакета с результатами
- Обработка результатов на серверах Microsoft и получение подписи
Создаем самоподписанный сертификат и закрытый ключ
Создадим в корне диска каталог C:DriverCert.
Откроем командную строку и перейдем в следующий каталог:
cd C:Program Files (x86)Microsoft SDKsWindowsv7.1bin
Создадим самоподписанный сертификат и закрытый ключ, выданный, допустим, для компании Winitpro:
makecert -r -sv C:DriverCertmyDrivers.pvk -n CN=”Winitpro” C:DriverCertMyDrivers.cer
Во время создания утилита попросит указать пароль для ключа, пусть это будет P@ss0wrd.
На основе созданного сертификата создадим публичный ключ для сертификата издателя ПО (PKCS).
cert2spc C:DriverCertmyDrivers.cer C:DriverCertmyDrivers.spc
Объединим публичный ключ (.spc) и персональный ключ (.pvk) в одном файле сертификата формата Personal Information Exchange (.pfx).
pvk2pfx -pvk C:DriverCertmyDrivers.pvk -pi P@ss0wrd -spc C:DriverCertmyDrivers.spc -pfx C:DriverCertmyDrivers.pfx -po P@ss0wrd
Совет. Несмотря на то, что сертификат имеет ограниченный срок действия, истечение срока действия сертификата CodeSigning означает, что вы не сможете создавать новые сигнатуры. Срок действия драйвера, уже подписанного этим сертификатом, бессрочен (либо старые сигнатуры действуют в течении указанного timestamp).
Способ 1: особые параметры загрузки windows
Чаще всего необходимость отключения проверки цифровой подписи возникает единожды. В этой ситуации логичнее всего воспользоваться предоставлением временного разрешения. Оно будет работать один раз: до последующей перезагрузки компьютера. За этот промежуток времени вы можете инсталлировать любое количество непроверенных драйверов, перезапустить ПК, и проверка сертификата будет работать как и прежде, защищая операционную систему.
Первым делом запустите ОС в особом режиме. Пользователям Windows 10 потребуется выполнить следующие шаги:
- Запустите «Параметры», вызвав «Пуск».
Это же можно сделать, вызвав альтернативное меню ПКМ.
- Откройте «Обновление и безопасность».
- В меню слева перейдите в «Восстановление», а справа, под «Особые варианты загрузки», кликните «Перезагрузить сейчас».
- Дождитесь старта Виндовс и выберите раздел «Поиск и устранение неисправностей».
- В «Диагностика» перейдите в «Дополнительные параметры».
- Здесь откройте «Параметры загрузки».
- Ознакомьтесь с тем, что применится при следующем старте системы, и нажмите «Перезагрузить».
- В этом режиме будет отключено управление мышью, а также изменится разрешение экрана до низкого. Пункт, отвечающий за отключение проверки подписи драйверов, седьмой в списке. Соответственно, нажмите на клавиатуре F7.
- Начнется перезапуск, по завершении которого вы можете выполнить инсталляцию.
Последовательность действий для пользователей Windows 7 другая:
- Перезагрузите компьютер обычным способом.
- После начала запуска системы нажмите F8 (чтобы не пропустить момент, быстро жмите клавишу сразу же после того, как появится приветственный логотип материнской платы).
- Стрелками выберите «Отключение обязательной проверки подписи драйверов».
- Остается нажать Enter и дождаться перезапуска системы.
Теперь можно заняться инсталляцией программного обеспечения.
После следующего включения компьютера будет произведен обычный запуск системы, и она вновь начнет проверять подпись у драйверов, которые вы захотите установить. Обратите внимание, что эта служба не занимается проверкой установленных драйверов, для этого необходимо запускать отдельное приложение, которое по понятным причинам нас не интересует.
Способ 2: «командная строка»
Отключить верификацию цифровой подписи можно при помощи введения команд в «Командную строку» операционной системы.
- Жмите «Пуск». Переходите во «Все программы».
- Щелкайте «Стандартные».
- В раскрывшейся директории ищите «Командная строка». Произведя нажатие по указанному элементу правой кнопкой мышки (ПКМ), выбирайте позицию «Запуск от имени администратора» в отобразившемся перечне.
- Активируется «Командная строка», в которую нужно ввести следующее:
bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS
Щелкайте Enter.
- После появления информации, говорящей об удачном завершении задачи, вбивайте такое выражение:
bcdedit.exe -set TESTSIGNING ON
Снова применяйте Enter.
- Верификация подписи теперь деактивирована.
- Для её повторной активации вбейте:
bcdedit -set loadoptions ENABLE_INTEGRITY_CHECKS
Применяйте нажатием Enter.
- Затем вбейте:
bcdedit -set TESTSIGNING ON
Снова нажимайте Enter.
- Верификация подписи снова активирована.
Существует ещё один вариант действий через «Командную строку». В отличие от предыдущего, он требует всего лишь введения одной команды.
- Вводите:
bcdedit.exe /set nointegritychecks ON
Жмите Enter.
- Проверка деактивирована. Но после инсталляции необходимого драйвера все-таки рекомендуем снова активировать верификацию. В «Командной строке» вбейте:
bcdedit.exe /set nointegritychecks ON OFF
- Верификация подписи опять активирована.
Урок: Активация «Командной строки» в Виндовс 7
Способ 3: «редактор групповой политики»
Другой вариант деактивации верификации подписи осуществляется методом манипуляций в «Редакторе групповой политики». Правда, он доступен только в редакциях «Корпоративная», «Профессиональная» и «Максимальная», а вот для редакций «Домашняя базовая», «Начальная» и «Домашняя расширенная» этот алгоритм выполнения поставленной задачи не подойдет, так как в них отсутствует необходимая функциональность.
- Для активации нужного нам инструмента воспользуемся оболочкой «Выполнить». Нажмите Win R. В поле отобразившейся формы введите:
gpedit.msc
Жмите «OK».
- Запускается необходимый для наших целей инструмент. В центральной части открывшегося окна щелкайте по позиции «Конфигурация пользователя».
- Далее жмите «Административные шаблоны».
- Теперь войдите в директорию «Система».
- Затем откройте объект «Установка драйвера».
- Теперь щелкайте по названию «Цифровая подпись драйверов…».
- Открывается окно настройки вышеуказанного компонента. Выставьте радиокнопку в положение «Отключить», а затем жмите «Применить» и «OK».
- Теперь закрывайте все открытые окна и программы, далее щелкайте «Пуск». Кликните по треугольной фигуре справа от кнопки «Завершение работы». Выбирайте «Перезагрузка».
- Компьютер будет перезапущен, после чего верификация подписи деактивируется.
Способ 3: редактор локальной групповой политики
Еще один вариант решения поставленной задачи — редактирование политики компьютера. Им могут воспользоваться обладатели Windows версии выше Home (Домашней).
- Зажмите Win R и впишите gpedit.msc. Подтвердите ввод кнопкой «ОК» либо клавишей Enter.
- Используя левое меню, разверните поочередно папки, нажимая на стрелочку перед их названием: «Конфигурация пользователя» > «Административные шаблоны» > «Система» > «Установка драйвера».
- Справа в окне дважды ЛКМ кликните по «Цифровая подпись драйверов устройств».
- Здесь задайте значение «Отключено», означающее, что осуществляться сканирование как таковое не будет.
- Сохраните настройки через «ОК» и перезагрузите компьютер.
Запустите драйвер, который не удавалось установить, и повторите попытку.
Установка драйвера, заверенного самоподписанным сертификатом
Попробуем еще раз установить подписанный нами драйвер, выполнив команду:
Pnputil –i –a C:DriverCertxg20xg20gr.inf
Теперь в процессе установки драйвера, окна-предупреждения об отсутствующей цифровой подписи драйвера не появится.
Successfully installed the driver on a device on the system.Driver package added successfully.
В Windows 7 появляется такое предупреждение. о том, уверены ли вы, что хотите установить этот драйвер (в Windows 10 x64 1803 такое всплывающее окно не появляется). Нажав «Install», вы установите драйвер в системе.
Если по каким-то причинам драйвер не устанавливается, подробный лог установки драйвера содержится в файле C:Windowsinfsetupapi.dev.log. Этот лог позволит вам получить более подробную информацию об ошибке установки.
Если установка драйвера прошла успешно, в файле setupapi.dev.log будут примерно такие строки:
>>> [Device Install (DiInstallDriver) - C:WINDOWSSystem32DriverStoreFileRepositoryxg20gr.inf_amd64_c5955181485ee80axg20gr.inf] >>> Section start 2021/07/22 23:32:57.015 cmd: Pnputil -i -a c:DriverCertxgxg20gr.inf ndv: Flags: 0x00000000 ndv: INF path: C:WINDOWSSystem32DriverStoreFileRepositoryxg20gr.inf_amd64_c5955181485ee80axg20gr.inf inf: {SetupCopyOEMInf: C:WINDOWSSystem32DriverStoreFileRepositoryxg20gr.inf_amd64_c5955181485ee80axg20gr.inf} 23:32:57.046 inf: Copy style: 0x00000000 inf: Driver Store Path: C:WINDOWSSystem32DriverStoreFileRepositoryxg20gr.inf_amd64_c5955181485ee80axg20gr.inf inf: Published Inf Path: C:WINDOWSINFoem23.inf inf: {SetupCopyOEMInf exit (0x00000000)} 23:32:57.077 <<< Section end 2021/07/22 23:32:57.155 <<< [Exit status: SUCCESS]
Как вы видите, для установки самоподписанного драйвера нам даже не пришлось отключать проверку цифровой подписи драйверов с помощью bcdedit.exe, как описано здесь (команды bcdedit.exe /set loadoptions DISABLE_INTEGRITY_CHECKS и bcdedit.exe /set testsigning ON).