Содержание
- Устранение ошибок подписи пакета приложения
- Это важно знать
- Технологии
- Предварительные требования
- Инструкции
- Шаг 1. Изучение журналов событий для получения диагностических сведений
- Шаг 2. Определение цепочки сертификатов, используемой для подписи пакета приложения
- Шаг 3. Определение сертификатов, доверенных локальным компьютером
- Remarks
- Вопросы безопасности
- Как подписать драйвер Windows 10, 8.1 и Windows 7 x64 и x86
- Что потребуется для подписи драйвера
- Процесс самостоятельной подписи драйвера
Устранение ошибок подписи пакета приложения
Сбой развертывания приложения может быть вызван сбоем проверки цифровой подписи пакета приложения. Узнайте, как распознать эти сбои и что делать с ними.
При развертывании упаковаемого приложения Windows Windows всегда пытается проверить цифровую подпись в пакете приложения. Сбои во время развертывания блока проверки подписи пакета. Но почему пакет не был проверен, может быть неявным. В частности, если вы подписываете пакеты с помощью частных сертификатов для локального тестирования, часто необходимо управлять доверием для этих сертификатов. Неправильная конфигурация доверия сертификатов может привести к сбоям проверки подписи.
Это важно знать
Технологии
Предварительные требования
- Windows журнал событий для диагностики сбоев установки.
- Задачи Certutil для управления сертификатами для манипуляции с хранилищем сертификатов во время устранения неполадок
Инструкции
Шаг 1. Изучение журналов событий для получения диагностических сведений
В зависимости от того, как вы пытались развернуть приложение, возможно, вы не получили значимый код ошибки для сбоя развертывания. В этом случае код ошибки обычно можно получить непосредственно из журналов событий.
Получение кода ошибки из журналов событий
Запустите eventvwr.msc.
Перейдите в раздел Просмотр событий (локальные)>приложения и службы LogsMicrosoft> >Windows.
Первый журнал для проверки — AppxPackagingOMMicrosoft-Windows-AppxPackaging/Operational. >
Ошибки, связанные с развертыванием, записываются в AppXDeployment-ServerMicrosoft-Windows-AppXDeploymentServer/Operational. >
Для ошибок развертывания найдите последнее событие ошибки 404. Это событие ошибки содержит код ошибки и описание причины сбоя развертывания. Если событие ошибки 465 предшествовало событию 404, возникла проблема при открытии пакета.
Если ошибка 465 не произошла, ознакомьтесь с общими сведениями об устранении неполадок, связанных с упаковкой, развертыванием и запросом приложений Windows. В противном случае ознакомьтесь с этой таблицей для распространенных кодов ошибок, которые могут отображаться в строке ошибки для события ошибки 465:
Код ошибки | Error | Описание | Предложение |
---|---|---|---|
0x80073CF0 | ERROR_INSTALL_OPEN_PACKAGE_FAILED | Не удалось открыть пакет приложения. | Эта ошибка обычно указывает на проблему с пакетом. Необходимо создать и подписать пакет еще раз. Дополнительные сведения см. в разделе «Использование упаковщика приложений». |
0x80080205 | APPX_E_INVALID_BLOCKMAP | Пакет приложения был изменен или имеет недопустимую карту блоков. | Пакет поврежден. Необходимо создать и подписать пакет еще раз. Дополнительные сведения см. в разделе «Использование упаковщика приложений». |
0x800B0004 | TRUST_E_SUBJECT_NOT_TRUSTED | Пакет приложения был изменен. | Содержимое пакета больше не соответствует его цифровой подписи. Вам нужно снова подписать пакет. Дополнительные сведения см. в разделе «Как подписать пакет приложения с помощью SignTool». |
0x800B0100 | TRUST_E_NOSIGNATURE | Пакет приложения не подписан. | Можно развернуть только подписанные Windows пакеты приложений. Сведения о подписании пакета приложения см. в разделе «Как подписать пакет приложения с помощью SignTool». |
0x800B0109 | CERT_E_UNTRUSTED_ROOT | Цепочка сертификатов, используемая для подписывания пакета приложения, заканчивается корневым сертификатом, который не является доверенным. | Перейдите к шагу 2, чтобы устранить неполадки доверия с сертификатом. |
0x800B010A | CERT_E_CHAINING | Цепочка сертификатов не может быть создана для доверенного корневого центра из сертификата, который использовался для подписи пакета приложения. | Перейдите к шагу 2, чтобы устранить неполадки доверия с сертификатом. |
Шаг 2. Определение цепочки сертификатов, используемой для подписи пакета приложения
Чтобы выяснить сертификаты, которым должен доверять локальный компьютер, можно проверить цепочку сертификатов для цифровой подписи в пакете приложения.
Определение цепочки сертификатов
- В проводник щелкните правой кнопкой мыши пакет приложения и выберите пункт «Свойства«.
- В диалоговом окне «Свойства» выберите вкладку «Цифровые подписи» , в которой также отображается возможность проверки подписи.
- В списке подписей выберите подпись и нажмите кнопку «Сведения «.
- В диалоговом окне сведений о цифровой подписи нажмите кнопку «Просмотреть сертификат «.
- В диалоговом окне «Сертификат» выберите вкладку «Путь сертификации «.
Верхний сертификат в цепочке — это корневой сертификат, а нижний — сертификат подписи. Если в цепочке находится только один сертификат, сертификат подписи также является собственным корневым сертификатом. Вы можете определить серийный номер для каждого сертификата, который затем используется с Certutil:
Определение серийного номера для каждого сертификата
- В области пути сертификации выберите сертификат и нажмите кнопку «Просмотреть сертификат«.
- В диалоговом окне «Сертификат» выберите вкладку «Сведения» , в которой отображается серийный номер и другие полезные свойства сертификата.
Шаг 3. Определение сертификатов, доверенных локальным компьютером
Чтобы иметь возможность развернуть пакет приложения, он должен быть не только доверенным в контексте пользователя, но и в контексте локального компьютера. В результате цифровая подпись может отображаться допустимой при просмотре на вкладке «Цифровые подписи» из предыдущего шага, но при развертывании пакета приложения по-прежнему завершается сбоем.
Чтобы определить, является ли цепочка сертификатов, используемая для подписи пакета приложения, является ли он доверенным локальным компьютером.
Выполните следующую команду:
Выполните следующую команду:
Если не указать серийный номер сертификата, Certutil выводит список всех сертификатов, доверенных локальным компьютером для этого хранилища.
Пакет может не установиться из-за ошибок цепочки сертификатов, даже если сертификат подписи не является самозаверяющим, а корневой сертификат находится в корневом хранилище локального компьютера. В этом случае может возникнуть проблема с доверием для промежуточных центров сертификации. Дополнительные сведения об этой проблеме см. в разделе «Работа с сертификатами».
Если вы определили, что пакет не удалось развернуть, так как сертификат подписи не является доверенным, не устанавливайте пакет, если вы не знаете, где он был создан, и вы доверяете ему.
Если вы хотите вручную доверять приложению для установки (например, для установки собственного пакета приложения, подписанного тестом), вы можете вручную добавить сертификат в доверие к сертификату локального компьютера из пакета приложения.
Добавление сертификата вручную в доверие к сертификату локального компьютера
- В проводник щелкните правой кнопкой мыши пакет приложения и в всплывающем контекстном меню выберите «Свойства«.
- В диалоговом окне «Свойства» выберите вкладку «Цифровые подписи «.
- В списке подписей выберите подпись и нажмите кнопку «Сведения «.
- В диалоговом окне сведений о цифровой подписи нажмите кнопку «Просмотреть сертификат «.
- В диалоговом окне «Сертификат» нажмите кнопку «Установить сертификат. «.
- В мастере импорта сертификатов выберите локальный компьютер и нажмите кнопку «Далее«. Чтобы продолжить, необходимо предоставить права администратора.
- Выберите «Поместить все сертификаты в следующее хранилище » и перейдите в хранилище «Доверенные люди «.
- Нажмите кнопку «Далее«, а затем нажмите кнопку «Готово «, чтобы завершить работу мастера.
После этого добавления вручную вы увидите, что сертификат теперь является доверенным в диалоговом окне «Сертификат «.
Сертификат можно удалить после того, как он больше не нужен.
Удаление сертификата
Запустите Cmd.exe от имени администратора.
В командной строке администратора выполните следующую команду:
Найдите серийный номер установленного сертификата. Это число является идентификатором сертификата.
Выполните следующую команду:
Рекомендуется избегать ручного добавления корневых сертификатов в хранилище сертификатов доверенных корневых центров сертификации локального компьютера. Наличие нескольких приложений, подписанных сертификатами, которые связаны с тем же корневым сертификатом, например бизнес-приложениями, могут быть более эффективными, чем установка отдельных сертификатов в хранилище доверенных лиц. Хранилище «Доверенные люди» содержит сертификаты, которые считаются доверенными по умолчанию, поэтому не проверяются более высокими центрами сертификации или списками доверия сертификатов или цепочками. Рекомендации по добавлению сертификатов в хранилище сертификатов доверенных корневых центров сертификации см. в разделе «Рекомендации по подписи кода».
Вопросы безопасности
Добавив сертификат в хранилища сертификатов локальной машины, вы меняете доверие сертификатов всех пользователей на компьютере. Рекомендуется установить все сертификаты подписи кода, которые требуется для тестирования пакетов приложений в хранилище сертификатов доверенных лиц. Немедленно удалите эти сертификаты, когда они больше не нужны, чтобы предотвратить их использование для компрометации доверия системы. Если вы создаете собственные тестовые сертификаты для подписывания пакетов приложений, мы также рекомендуем ограничить привилегии, связанные с тестируемым сертификатом. Сведения о создании тестовых сертификатов для подписывания пакетов приложений см. в статье «Создание сертификата подписи пакета приложения».
Источник
Как подписать драйвер 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 стороннего производителя не содержит информации о подписи».
Что потребуется для подписи драйвера
Для того, чтобы выполнить все описанные далее шаги, скачайте и установите следующие инструменты с сайта Майкрософт:
Из первого набора достаточно будет установить Tools, из второго (представляет собой ISO-образ с установщиком, с которого нужно запустить KitSetup.exe) — выбрать Build Environments и Tools.
Обратите внимание: это не последние версии наборов инструментов, но они в равной степени подойдут для самостоятельной подписи драйверов для последующей установки во всех ОС от Windows 10 до Windows 7, при этом в инструкции не потребуется вдаваться в некоторые дополнительные нюансы.
Процесс самостоятельной подписи драйвера
В процессе для того, чтобы подписать драйвер самостоятельно, нам потребуется: создать сертификат, подписать драйвер этим сертификатом, установить сертификат в системе и установить драйвер. Начнем.
- Создайте в корне диска C какую-либо папку (так к ней проще будет обращаться в дальнейшем), например, C:cert, где мы будем работать с сертификатами и драйверами.
- Запустите командную строку от имени администратора (нужны для 18-го шага). Далее используем следующие команды по порядку. Файлы драйвера пока не потребуются. Во время выполнения второй команды вас попросят ввести пароль, я использую password в окне запроса и далее в командах, вы можете использовать свой.
- До этого этапа всё должно пройти как на скриншоте ниже, командную строку не закрываем.
- В папке C:cert создайте вложенную папку, например, drv и поместите туда свои файлы драйвера. Но: если вам требуется драйвер только для x64, не копируйте .inf файл для x86 систем в эту папку и наоборот. В командной строке используем следующие команды:
- В предыдущей команде для драйвера 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:certdrvcatalog.cat. Далее используем следующие команды (требуется подключение к Интернету).
- Результат подписи файла драйвера без ошибок на скриншоте ниже. Следующий шаг — добавить самоподписанный сертификат в список доверенных в системе, сделать это можно следующими двумя командами по порядку
- В результате вы должны получить сообщение «CertMgr Succeeded». Если Failed или certmgr.exe не является внутренней или внешней командой — убедитесь, что командная строка запущена от имени администратора, а вы находитесь в нужной папке (см. 15 шаг).
И вот теперь можно закрыть командную строку и установить драйвер из папки C:certdrv с помощью диспетчера устройств, или нажав правой кнопкой по .inf файлу и выбрав пункт «Установить». Потребуется подтвердить установку драйвера в окне «Не удалось проверить издателя этих драйверов» — нажать «Все равно установить этот драйвер».
Обратите внимание, что возможные ошибки в диспетчере устройств, отображаемые для устройства с самостоятельно подписанным драйвером обычно не имеют отношения непосредственно к процессу подписи (та же ошибка для них будет появляться и без подписи, при простом отключении проверки цифровой подписи драйверов в особых вариантах загрузки). Т.е. искать причину в этом случае нужно в чем-то ещё и читать подробную инструкцию по использованию драйвера (например, в случае драйверов для FlashTool).
Источник
|
# 1 |
::VIP::
Регистрация: 12.09.2002 Адрес: Russia, region 67 Пол: Male Сообщения: 2 393 |
Всем привет! 1) В свойствах ехе файлов нет соответствующей вкладки Цифровые подписи (ЦП 100% у файлов есть) починил вроде Цитата: SignTool Error 3) некоторые приложения не устанавливаются из-за ошибки Цитата: Сбой проверки целостности программы установки. Распространенные причины такого сбоя включают незавершенную загрузку, повреждение носителя или проблемы с надежным хранилищем сертификата корневого узла. Windows 7 Ultimate SP1 (сборка 7601) обновления стоят по 19 апреля 2019 включительно.
__________________
Последний раз редактировалось •DimON•; 15.05.2019 в 02:15. Причина: починил вроде п.1
|
|
|
# 2 |
Administrator
Регистрация: 06.05.2003 Адрес: Московская Подводная Лодка Пол: Male Сообщения: 11 999 |
Цитата:
Сообщение от •DimON• В свойствах ехе файлов нет соответствующей вкладки Цифровые подписи (ЦП 100% у файлов есть) Например, на каких? Я первым делом полез проверять в директорию System32 и был удивлен: из десятка заведомо майкрософтовых файлов — ни у одного подписи нет . Точней вкладки соответствующей. Вот на Firefox.exe — есть Ну, и традиционный вопрос: а на других компах с тех же дистрибов и носителей установить пробовал?
__________________ M.M.
|
|
|
# 3 |
::VIP::
Регистрация: 12.09.2002 Адрес: Russia, region 67 Пол: Male Сообщения: 2 393 |
Plague, установить что?
__________________ |
|
|
# 4 |
::VIP::
Регистрация: 12.09.2002 Адрес: Russia, region 67 Пол: Male Сообщения: 2 393 |
починил вроде пункт 1
__________________ |
|
|
# 5 |
Administrator
Регистрация: 06.05.2003 Адрес: Московская Подводная Лодка Пол: Male Сообщения: 11 999 |
Цитата:
Сообщение от •DimON• Plague, установить что? это Цитата:
Сообщение от •DimON• некоторые приложения не устанавливаются из-за ошибки Цитата:
Сообщение от •DimON• починил вроде пункт 1 а что было и как починил — военная тайна?
__________________ M.M.
|
|
|
# 6 |
::VIP::
Регистрация: 12.09.2002 Адрес: Russia, region 67 Пол: Male Сообщения: 2 393 |
Plague, стоят все эти приложения на ноуте с такой же ОС (из одного дистра)
__________________ |
|
|
# 7 |
СуперМод
Регистрация: 14.08.2002 Адрес: Московская ПЛ, ракетный отс Пол: Male Сообщения: 14 267
|
Насколь я в курсе, на KMS Tools и прочих кряках квалифицированная (т.е. подтверждённая доверенным УЦ) ЭЦП отсутствует как класс. В силу того простейшего факта, что является деанонимизатором автора…
__________________ |
|
|
# 8 |
::VIP::
Регистрация: 12.09.2002 Адрес: Russia, region 67 Пол: Male Сообщения: 2 393 |
Borland, проблема началась, в принципе, давно — не мог обновить SEP и не могу до сих пор. Цитата: ————————— Также, не мог и удалить SEP штатной утилитой CleanWipe, появляется окно ошибки: Цитата: ————————— Насчёт сертификатов можно подробнее? Код: http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab Это оно?
__________________ |
|
|
# 9 |
СуперМод
Регистрация: 14.08.2002 Адрес: Московская ПЛ, ракетный отс Пол: Male Сообщения: 14 267
|
Цитата:
Сообщение от •DimON• Это оно? Вроде да.
__________________ |
|
|
# 10 |
::VIP::
Регистрация: 12.09.2002 Адрес: Russia, region 67 Пол: Male Сообщения: 2 393 |
Цитата:
Сообщение от Borland Вроде да. Блин, так если «это оно», то почему процедура добавления сертификатов руками не решает проблему?
__________________ |
|
|
# 11 |
СуперМод
Регистрация: 14.08.2002 Адрес: Московская ПЛ, ракетный отс Пол: Male Сообщения: 14 267
|
•DimON• Цитата:
Сообщение от Borland экспортировать с заведомо рабочей системы, импортировать на глючной certmgr.msc, «Доверенные корневые центры сертификации»->»Сертификаты», выделить все, правой кнопкой мыши, все задачи->Экспорт Перенести экспортированные файлики на глючную машину, в том же certmgr.msc очистить соответствующие папки от имеющихся сертификатов и импортировать в них из соответствующих архивов.
__________________ |
|
|
# 12 |
::VIP::
Регистрация: 12.09.2002 Адрес: Russia, region 67 Пол: Male Сообщения: 2 393 |
Цитата:
Сообщение от Borland Что за формат .stl и что там внутри — я, честно говоря, не понял. Этот вот, из окна экспорта сертификатов Не помог совет с импортом-экспортом, результат тотже
__________________ |
|
|
# 13 |
СуперМод
Регистрация: 14.08.2002 Адрес: Московская ПЛ, ракетный отс Пол: Male Сообщения: 14 267
|
__________________ |
|
|
# 14 |
::VIP::
Регистрация: 12.09.2002 Адрес: Russia, region 67 Пол: Male Сообщения: 2 393 |
Borland, не помогло
__________________ |
|
Цифровая подпись драйвера используется Microsoft для идентификации производителя и подтверждения соответствия продукта требованиям операционной системы. Наличие такого электронного сертификата гарантирует отсутствие в нем изменений, внесенных после выпуска. Таким образом, пользователь получает двойную гарантию безопасности и может быть уверен в работоспособности полученного драйвера.
Содержание
- 1 Проверка подписей
- 1.1 Direct X
- 1.2 Signature Verification
- 2 Отключение подписи
- 2.1 Групповая политика
- 2.2 Особые параметры загрузки
- 2.3 Режим командной строки
- 3 Создание цифровой подписи
- 4 В заключение
Проверка подписей
Windows выполняет проверку цифрового сертификата автоматически. Обнаружив его отсутствие, система выдает пользователю предупреждение об опасности установки неподписанного драйвера. Для проверки уже инсталлированных в ОС компонентов можно использовать встроенные инструменты.
Direct X
Драйверы мультимедиа ‒ наиболее часто обновляемые компоненты ОС. Проверить их на наличие сертификата можно с помощью встроенного средства диагностики. Запускаем его командой, показанной на скриншоте.
На основной вкладке ставим галочку в отмеченном поле. Таким образом мы включим автоматическую проверку утилитой сертификатов соответствия.
Переключившись на следующую вкладку, в поле «Драйверы» мы видим положительный ответ системы.
Аналогичным образом проверяем остальные страницы, убеждаясь в наличии сертификата WHQL.
Signature Verification
Выявить наличие в системе всех компонентов без цифровой подписи можно, используя специальную утилиту проверки. Запустим ее, набрав в текстовом поле «sigverif».
Нажимаем отмеченную кнопку для активации процедуры тестирования компонентов.
Завершение верификации несколько изменит вид основного окна утилиты. Нажимаем на выделенную кнопку, чтобы открыть дополнительные параметры.
Выбираем опцию «Просмотр журнала».
В текстовом редакторе запускается отчет о состоянии установленных в системе драйверов. Обозначенная колонка «Состояние» дает информацию о наличии цифрового сертификата WHQL.
Разобравшись с текущим состоянием системы, рассмотрим, как выполнить отключение проверки цифровой подписи драйверов в Windows 10.
Отключение подписи
Поддерживая стабильность ОС, Microsoft не рекомендует устанавливать компоненты, не имеющие сертификатов WHQL, но такая возможность в системе осталась. Необходимость установить неподписанный драйвер может возникнуть по разным причинам. К примеру, это может быть оборудование, снятое с производства, но необходимое для работы.
Групповая политика
Самый простой способ отключить электронную подпись заключается в изменении политики безопасности. Запускаем редактор, используя меню «Выполнить».
В главном окне последовательно разворачиваем подчеркнутые пункты в области навигации. Последний раздел содержит три параметра. Нужный нам выделен рамкой. Открываем его для редактирования.
В управляющем блоке ставим переключатель в положение «Включено». В области параметров используем выпадающее меню. Выбираем пункт, отмеченный цифрой «2». Применяем и сохраняем внесенные изменения.
Заданное правило должно начать действовать без перезагрузки.
Особые параметры загрузки
Следующий способ предполагает использование особых вариантов загрузки операционной системы. Открываем меню параметров Windows и переходим в указанный на скриншоте раздел.
В области навигации перемещаемся к пункту «Восстановление». Используем отмеченную кнопку для перезагрузки системы.
Управление мышью тут доступно, поэтому последовательно начинаем перемещаться по меню. Открываем раздел устранения неисправностей.
Выбираем дополнительные параметры.
Переходим к настройкам загрузки.
Эта область информационная и работает в ней только отмеченная кнопка.
Система переходит в режим низкого разрешения экрана и отключает управление мышью. Нужный нам пункт седьмой в списке. Выбираем его, нажимая управляющую клавишу «F7» в верхнем ряду клавиатуры.
Компьютер перезагрузится, после чего установка неподписанных драйверов в ОС станет доступна.
Режим командной строки
С помощью этого метода можно также отключить проверку цифровой подписи драйвера в Windows 7. Запускаем PowerShell в режиме повышенных прав. Вводим последовательно приведенные на скриншоте команды.
После перезагрузки система не будет сообщать, что ей требуется драйвер с цифровой подписью. Для отключения режима в тексте последней команды указываем «OFF» вместо «ON».
Еще один вариант использования командной строки требует перезагрузки в безопасный режим. Последовательность действий мы уже рассматривали. Добравшись до дополнительных параметров, выбираем обозначенный пункт.
Операционная система еще раз перезагрузится, отобразив командную строку в режиме администратора. Вводим приведенную на скриншоте команду. Для выхода в графическое меню набираем «exit».
Отключение данного режима также выполняется заменой «ON» на «OFF» в конце управляющей команды.
Создание цифровой подписи
В некоторых случаях описанные методы могут не помочь. Когда не отключается проверка подписи драйверов Windows 7 или 10, придется подписать его самостоятельно. Для этой цели нам понадобится распаковать установочный пакет и найти файл с расширением INF. В нем содержится необходимая для инсталляции в системе информация. Найдя нужный файл, вызываем его свойства и переходим на вкладку «Безопасность». Копируем путь, указанный в поле «Имя объекта».
Запускаем PowerShell с повышенными правами. Вводим следующую команду: «pnputil -a C:pathname.inf». Заменяем в ней строку «C:pathname.inf» на скопированный путь к файлу.
В результате ее выполнения выбранный драйвер будет зарегистрирован в системе. Этот же способ подойдет и в том случае, когда постоянно слетает цифровая подпись драйвера.
В заключение
Как мы убедились, существует несколько вариантов установки необходимых компонентов без электронного сертификата WHQL. Действия несложные и могут быть выполнены любым пользователем. Тем не менее, установка неподписанного драйвера не должна быть нормой. Поскольку он не тестировался Microsoft, компания не будет нести ответственность за последствия его установки, а пользователь имеет высокие шансы столкнуться с ошибками BSOD.
I’ve checked out this USB Device Emulation (UDE) project : https://github.com/microsoft/UDE/tree/master/UDEMbimClientSample
The project built properly the driver for x64 target in Release configuration under Visual Studio 19 Community :
1>------ Début de la régénération globale : Projet : hostude, Configuration : Release x64 ------
2>------ Début de la régénération globale : Projet : hostudetest, Configuration : Release x64 ------
1>Building 'hostude' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.
1>Stamping x64Releasehostude.inf
1>Stamping [Version] section with DriverVer=06/28/2020,10.49.21.636
1>C:UsersSCOsourcereposUSB_UDE_SampleUDEFX_hostdriverhostude.inx(19-19): warning 1324: [Version] section should specify PnpLockdown=1.
1>bulkrwr.c
2>Building 'hostudetest' with toolset 'WindowsApplicationForDrivers10.0' and the 'Universal' target platform.
2>dump.c
1>device.c
2>testapp.c
1>driver.c
2>Génération de code en cours...
1>Interrupt.c
1>ioctl.c
1>Génération de code en cours...
2>hostudetest.vcxproj -> C:UsersSCOsourcereposUSB_UDE_SampleUDEFX_hostexex64Releasehostudetest.exe
1>hostude.vcxproj -> C:UsersSCOsourcereposUSB_UDE_SampleUDEFX_hostdriverx64Releasehostude.sys
1>Done Adding Additional Store
1>Successfully signed: C:UsersSCOsourcereposUSB_UDE_SampleUDEFX_hostdriverx64Releasehostude.sys
1>
1>catalog file for x64 release
2>Driver is 'Universal'.
1>.............................................................
1>Signability test complete.
1>
1>Errors:
1>None
1>
1>Warnings:
1>None
1>
1>Catalog generation complete.
1>C:UsersSCOsourcereposUSB_UDE_SampleUDEFX_hostdriverx64Releasekmdfsamples.cat
1>Génération du projet "hostude.vcxproj" terminée.
========== Régénération globale : 2 a réussi, 0 a échoué, 0 a été ignoré ==========
A .cat, .inf and .sys files are generated, as well as a .cer file. I added the latter to Local Machine certificate store in ‘root‘ and ‘trusted publishers‘ using certmgr.msc.
When trying to use devcon to install the driver, I get the indication that «no signature was found in the subject» in the following log devcon lo, then later on that it was not digitally signed :
>>> [Device Install (UpdateDriverForPlugAndPlayDevices) - USBVID_1209&PID_0887]
>>> Section start 2020/06/28 09:34:27.873
cmd: devcon.exe install hostude.inf "USBVID_1209&PID_0887"
ndv: INF path: C:UsersSCOsourcereposUSB_UDE_Samplegenereshostude.inf
ndv: Install flags: 0x00000001
ndv: {Update Device Driver - ROOTSAMPLE000}
ndv: Search options: 0x00000080
ndv: Searching single INF 'C:UsersSCOsourcereposUSB_UDE_Samplegenereshostude.inf'
dvi: {Build Driver List} 09:34:27.906
dvi: Searching for hardware ID(s):
dvi: usbvid_1209&pid_0887
sig: {_VERIFY_FILE_SIGNATURE} 09:34:27.938
sig: Key = hostude.inf
sig: FilePath = c:usersSCOsourcereposusb_ude_samplegenereshostude.inf
sig: Catalog = c:usersSCOsourcereposusb_ude_samplegeneresKmdfSamples.cat
! sig: Verifying file against specific (valid) catalog failed.
! sig: Error 0x800b0100: No signature was present in the subject.
sig: {_VERIFY_FILE_SIGNATURE exit(0x800b0100)} 09:34:27.968
sig: {_VERIFY_FILE_SIGNATURE} 09:34:27.969
sig: Key = hostude.inf
sig: FilePath = c:usersSCOsourcereposusb_ude_samplegenereshostude.inf
sig: Catalog = c:usersSCOsourcereposusb_ude_samplegeneresKmdfSamples.cat
! sig: Verifying file against specific Authenticode(tm) catalog failed.
! sig: Error 0x800b0100: No signature was present in the subject.
sig: {_VERIFY_FILE_SIGNATURE exit(0x800b0100)} 09:34:27.972
dvi: Created Driver Node:
dvi: HardwareID - USBVID_1209&PID_0887
dvi: InfName - c:usersSCOsourcereposusb_ude_samplegenereshostude.inf
dvi: DevDesc - Virtual USB Device for UDE sample
dvi: Section - lxhostude.Dev.NT
dvi: Rank - 0x80ff0000
dvi: Signer Score - Not digitally signed
dvi: DrvDate - 06/28/2020
dvi: Version - 9.0.23.397
dvi: {Build Driver List - exit(0x00000000)} 09:34:27.976
dvi: {DIF_SELECTBESTCOMPATDRV} 09:34:27.977
dvi: Default installer: Enter 09:34:27.977
dvi: {Select Best Driver}
dvi: Class GUID of device changed to: {78a1c341-4539-11d3-b88d-00c04fad5171}.
dvi: Selected Driver:
dvi: Description - Virtual USB Device for UDE sample
dvi: InfFile - c:usersSCOsourcereposusb_ude_samplegenereshostude.inf
dvi: Section - lxhostude.Dev
dvi: {Select Best Driver - exit(0x00000000)}
dvi: Default installer: Exit
dvi: {DIF_SELECTBESTCOMPATDRV - exit(0x00000000)} 09:34:27.981
ndv: Force Installing Driver:
ndv: Inf Name - hostude.inf
ndv: Driver Date - 06/28/2020
ndv: Driver Version - 9.0.23.397
sto: {Setup Import Driver Package: c:usersSCOsourcereposusb_ude_samplegenereshostude.inf} 09:34:27.984
inf: Provider: TODO-Set-Provider
inf: Class GUID: {78A1C341-4539-11d3-B88D-00C04FAD5171}
inf: Driver Version: 06/28/2020,9.0.23.397
inf: Catalog File: KmdfSamples.cat
sto: {Copy Driver Package: c:usersSCOsourcereposusb_ude_samplegenereshostude.inf} 09:34:27.990
sto: Driver Package = c:usersSCOsourcereposusb_ude_samplegenereshostude.inf
sto: Flags = 0x00000007
sto: Destination = C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}
sto: Copying driver package files to 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}'.
flq: Copying 'c:usersSCOsourcereposusb_ude_samplegeneresKmdfSamples.cat' to 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}KmdfSamples.cat'.
flq: Copying 'c:usersSCOsourcereposusb_ude_samplegenereshostude.inf' to 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.inf'.
flq: Copying 'c:usersSCOsourcereposusb_ude_samplegenereshostude.sys' to 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.sys'.
sto: {Copy Driver Package: exit(0x00000000)} 09:34:28.010
pol: {Driver package policy check} 09:34:28.069
pol: {Driver package policy check - exit(0x00000000)} 09:34:28.070
sto: {Stage Driver Package: C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.inf} 09:34:28.070
inf: {Query Configurability: C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.inf} 09:34:28.076
inf: Driver package uses WDF.
inf: Driver package 'hostude.inf' is configurable.
inf: {Query Configurability: exit(0x00000000)} 09:34:28.078
flq: Copying 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}KmdfSamples.cat' to 'C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}KmdfSamples.cat'.
flq: Copying 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.inf' to 'C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}hostude.inf'.
flq: Copying 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.sys' to 'C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}hostude.sys'.
sto: {DRIVERSTORE IMPORT VALIDATE} 09:34:28.096
sig: {_VERIFY_FILE_SIGNATURE} 09:34:28.125
sig: Key = hostude.inf
sig: FilePath = C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}hostude.inf
sig: Catalog = C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}KmdfSamples.cat
! sig: Verifying file against specific (valid) catalog failed.
! sig: Error 0x800b0100: No signature was present in the subject.
sig: {_VERIFY_FILE_SIGNATURE exit(0x800b0100)} 09:34:28.129
sig: {_VERIFY_FILE_SIGNATURE} 09:34:28.130
sig: Key = hostude.inf
sig: FilePath = C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}hostude.inf
sig: Catalog = C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}KmdfSamples.cat
! sig: Verifying file against specific Authenticode(tm) catalog failed.
! sig: Error 0x800b0100: No signature was present in the subject.
sig: {_VERIFY_FILE_SIGNATURE exit(0x800b0100)} 09:34:28.133
!!! sig: Driver package catalog file does not contain a signature, and Code Integrity is enforced.
!!! sig: Driver package failed signature validation. Error = 0xE0000247
sto: {DRIVERSTORE IMPORT VALIDATE: exit(0xe0000247)} 09:34:28.135
!!! sig: Driver package failed signature verification. Error = 0xE0000247
!!! sto: Failed to import driver package into Driver Store. Error = 0xE0000247
sto: {Stage Driver Package: exit(0xe0000247)} 09:34:28.137
sto: {Setup Import Driver Package - exit (0xe0000247)} 09:34:28.143
!!! ndv: Driver package import failed for device.
!!! ndv: Error 0xe0000247: A problem was encountered while attempting to add the driver to the store.
ndv: Installing NULL driver.
dvi: {Plug and Play Service: Device Install for ROOTSAMPLE000}
! dvi: Installing NULL driver!
dvi: {DIF_ALLOW_INSTALL} 09:34:28.291
dvi: Default installer: Enter 09:34:28.292
dvi: Default installer: Exit
dvi: {DIF_ALLOW_INSTALL - exit(0xe000020e)} 09:34:28.293
dvi: {DIF_REGISTER_COINSTALLERS} 09:34:28.293
dvi: Default installer: Enter 09:34:28.294
dvi: Default installer: Exit
dvi: {DIF_REGISTER_COINSTALLERS - exit(0x00000000)} 09:34:28.294
dvi: {DIF_INSTALLDEVICE} 09:34:28.295
dvi: Default installer: Enter 09:34:28.295
! dvi: Installing NULL driver!
dvi: Install Null Driver: Removing device sub-tree. 09:34:28.297
dvi: Install Null Driver: Removing device sub-tree completed. 09:34:28.300
dvi: Install Null Driver: Restarting device. 09:34:28.304
dvi: Install Null Driver: Restarting device completed. 09:34:28.306
dvi: Device Status: 0x01802401, Problem: 0x1c (0x00000000)
dvi: Install Device: Starting device 'ROOTSAMPLE000'. 09:34:28.307
dvi: Install Device: Starting device completed. 09:34:28.310
dvi: Default installer: Exit
dvi: {DIF_INSTALLDEVICE - exit(0x00000000)} 09:34:28.311
ump: {Plug and Play Service: Device Install exit(00000000)}
ndv: {Update Device Driver - exit(e0000247)}
!!! ndv: Failed to install device instance 'ROOTSAMPLE000'. Error = 0xe0000247
<<< Section end 2020/06/28 09:34:28.316
<<< [Exit status: FAILURE(0xe0000247)]
Indeed, using the following signtool command line, shows that the file is not signed :
C:UsersSCOsourcereposUSB_UDE_Samplegeneres>"C:Program Files (x86)Windows Kits10bin10.0.19041.0x64signtool.Exe" verify /v /kp /c kmdfsamples.cat hostude.inf
Verifying: hostude.inf
File is signed in catalog: C:UsersSCOsourcereposUSB_UDE_Samplegenereskmdfsamples.cat
Hash of file (sha1): 91E53BD8390C9843F9B856C2138CBF1A6BAFB3EA
SignTool Error: No signature found.
SignTool Error: File not valid: hostude.inf
Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1
Unfortunately, when I right click the driver file (hostude.sys), I can see the pane showing the certificate.
What is wrong here ? What could explain the discrepancy ? I’m pretty new into the WDK stuff and can’t explain this to me.
I’ve checked out this USB Device Emulation (UDE) project : https://github.com/microsoft/UDE/tree/master/UDEMbimClientSample
The project built properly the driver for x64 target in Release configuration under Visual Studio 19 Community :
1>------ Début de la régénération globale : Projet : hostude, Configuration : Release x64 ------
2>------ Début de la régénération globale : Projet : hostudetest, Configuration : Release x64 ------
1>Building 'hostude' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.
1>Stamping x64Releasehostude.inf
1>Stamping [Version] section with DriverVer=06/28/2020,10.49.21.636
1>C:UsersSCOsourcereposUSB_UDE_SampleUDEFX_hostdriverhostude.inx(19-19): warning 1324: [Version] section should specify PnpLockdown=1.
1>bulkrwr.c
2>Building 'hostudetest' with toolset 'WindowsApplicationForDrivers10.0' and the 'Universal' target platform.
2>dump.c
1>device.c
2>testapp.c
1>driver.c
2>Génération de code en cours...
1>Interrupt.c
1>ioctl.c
1>Génération de code en cours...
2>hostudetest.vcxproj -> C:UsersSCOsourcereposUSB_UDE_SampleUDEFX_hostexex64Releasehostudetest.exe
1>hostude.vcxproj -> C:UsersSCOsourcereposUSB_UDE_SampleUDEFX_hostdriverx64Releasehostude.sys
1>Done Adding Additional Store
1>Successfully signed: C:UsersSCOsourcereposUSB_UDE_SampleUDEFX_hostdriverx64Releasehostude.sys
1>
1>catalog file for x64 release
2>Driver is 'Universal'.
1>.............................................................
1>Signability test complete.
1>
1>Errors:
1>None
1>
1>Warnings:
1>None
1>
1>Catalog generation complete.
1>C:UsersSCOsourcereposUSB_UDE_SampleUDEFX_hostdriverx64Releasekmdfsamples.cat
1>Génération du projet "hostude.vcxproj" terminée.
========== Régénération globale : 2 a réussi, 0 a échoué, 0 a été ignoré ==========
A .cat, .inf and .sys files are generated, as well as a .cer file. I added the latter to Local Machine certificate store in ‘root‘ and ‘trusted publishers‘ using certmgr.msc.
When trying to use devcon to install the driver, I get the indication that «no signature was found in the subject» in the following log devcon lo, then later on that it was not digitally signed :
>>> [Device Install (UpdateDriverForPlugAndPlayDevices) - USBVID_1209&PID_0887]
>>> Section start 2020/06/28 09:34:27.873
cmd: devcon.exe install hostude.inf "USBVID_1209&PID_0887"
ndv: INF path: C:UsersSCOsourcereposUSB_UDE_Samplegenereshostude.inf
ndv: Install flags: 0x00000001
ndv: {Update Device Driver - ROOTSAMPLE000}
ndv: Search options: 0x00000080
ndv: Searching single INF 'C:UsersSCOsourcereposUSB_UDE_Samplegenereshostude.inf'
dvi: {Build Driver List} 09:34:27.906
dvi: Searching for hardware ID(s):
dvi: usbvid_1209&pid_0887
sig: {_VERIFY_FILE_SIGNATURE} 09:34:27.938
sig: Key = hostude.inf
sig: FilePath = c:usersSCOsourcereposusb_ude_samplegenereshostude.inf
sig: Catalog = c:usersSCOsourcereposusb_ude_samplegeneresKmdfSamples.cat
! sig: Verifying file against specific (valid) catalog failed.
! sig: Error 0x800b0100: No signature was present in the subject.
sig: {_VERIFY_FILE_SIGNATURE exit(0x800b0100)} 09:34:27.968
sig: {_VERIFY_FILE_SIGNATURE} 09:34:27.969
sig: Key = hostude.inf
sig: FilePath = c:usersSCOsourcereposusb_ude_samplegenereshostude.inf
sig: Catalog = c:usersSCOsourcereposusb_ude_samplegeneresKmdfSamples.cat
! sig: Verifying file against specific Authenticode(tm) catalog failed.
! sig: Error 0x800b0100: No signature was present in the subject.
sig: {_VERIFY_FILE_SIGNATURE exit(0x800b0100)} 09:34:27.972
dvi: Created Driver Node:
dvi: HardwareID - USBVID_1209&PID_0887
dvi: InfName - c:usersSCOsourcereposusb_ude_samplegenereshostude.inf
dvi: DevDesc - Virtual USB Device for UDE sample
dvi: Section - lxhostude.Dev.NT
dvi: Rank - 0x80ff0000
dvi: Signer Score - Not digitally signed
dvi: DrvDate - 06/28/2020
dvi: Version - 9.0.23.397
dvi: {Build Driver List - exit(0x00000000)} 09:34:27.976
dvi: {DIF_SELECTBESTCOMPATDRV} 09:34:27.977
dvi: Default installer: Enter 09:34:27.977
dvi: {Select Best Driver}
dvi: Class GUID of device changed to: {78a1c341-4539-11d3-b88d-00c04fad5171}.
dvi: Selected Driver:
dvi: Description - Virtual USB Device for UDE sample
dvi: InfFile - c:usersSCOsourcereposusb_ude_samplegenereshostude.inf
dvi: Section - lxhostude.Dev
dvi: {Select Best Driver - exit(0x00000000)}
dvi: Default installer: Exit
dvi: {DIF_SELECTBESTCOMPATDRV - exit(0x00000000)} 09:34:27.981
ndv: Force Installing Driver:
ndv: Inf Name - hostude.inf
ndv: Driver Date - 06/28/2020
ndv: Driver Version - 9.0.23.397
sto: {Setup Import Driver Package: c:usersSCOsourcereposusb_ude_samplegenereshostude.inf} 09:34:27.984
inf: Provider: TODO-Set-Provider
inf: Class GUID: {78A1C341-4539-11d3-B88D-00C04FAD5171}
inf: Driver Version: 06/28/2020,9.0.23.397
inf: Catalog File: KmdfSamples.cat
sto: {Copy Driver Package: c:usersSCOsourcereposusb_ude_samplegenereshostude.inf} 09:34:27.990
sto: Driver Package = c:usersSCOsourcereposusb_ude_samplegenereshostude.inf
sto: Flags = 0x00000007
sto: Destination = C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}
sto: Copying driver package files to 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}'.
flq: Copying 'c:usersSCOsourcereposusb_ude_samplegeneresKmdfSamples.cat' to 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}KmdfSamples.cat'.
flq: Copying 'c:usersSCOsourcereposusb_ude_samplegenereshostude.inf' to 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.inf'.
flq: Copying 'c:usersSCOsourcereposusb_ude_samplegenereshostude.sys' to 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.sys'.
sto: {Copy Driver Package: exit(0x00000000)} 09:34:28.010
pol: {Driver package policy check} 09:34:28.069
pol: {Driver package policy check - exit(0x00000000)} 09:34:28.070
sto: {Stage Driver Package: C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.inf} 09:34:28.070
inf: {Query Configurability: C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.inf} 09:34:28.076
inf: Driver package uses WDF.
inf: Driver package 'hostude.inf' is configurable.
inf: {Query Configurability: exit(0x00000000)} 09:34:28.078
flq: Copying 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}KmdfSamples.cat' to 'C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}KmdfSamples.cat'.
flq: Copying 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.inf' to 'C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}hostude.inf'.
flq: Copying 'C:UsersADM160~1AppDataLocalTemp{c575c0d5-20a9-eb43-ba83-57838dc44c4f}hostude.sys' to 'C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}hostude.sys'.
sto: {DRIVERSTORE IMPORT VALIDATE} 09:34:28.096
sig: {_VERIFY_FILE_SIGNATURE} 09:34:28.125
sig: Key = hostude.inf
sig: FilePath = C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}hostude.inf
sig: Catalog = C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}KmdfSamples.cat
! sig: Verifying file against specific (valid) catalog failed.
! sig: Error 0x800b0100: No signature was present in the subject.
sig: {_VERIFY_FILE_SIGNATURE exit(0x800b0100)} 09:34:28.129
sig: {_VERIFY_FILE_SIGNATURE} 09:34:28.130
sig: Key = hostude.inf
sig: FilePath = C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}hostude.inf
sig: Catalog = C:WINDOWSSystem32DriverStoreTemp{7caccbd7-e000-8346-9111-8852dc2b1d25}KmdfSamples.cat
! sig: Verifying file against specific Authenticode(tm) catalog failed.
! sig: Error 0x800b0100: No signature was present in the subject.
sig: {_VERIFY_FILE_SIGNATURE exit(0x800b0100)} 09:34:28.133
!!! sig: Driver package catalog file does not contain a signature, and Code Integrity is enforced.
!!! sig: Driver package failed signature validation. Error = 0xE0000247
sto: {DRIVERSTORE IMPORT VALIDATE: exit(0xe0000247)} 09:34:28.135
!!! sig: Driver package failed signature verification. Error = 0xE0000247
!!! sto: Failed to import driver package into Driver Store. Error = 0xE0000247
sto: {Stage Driver Package: exit(0xe0000247)} 09:34:28.137
sto: {Setup Import Driver Package - exit (0xe0000247)} 09:34:28.143
!!! ndv: Driver package import failed for device.
!!! ndv: Error 0xe0000247: A problem was encountered while attempting to add the driver to the store.
ndv: Installing NULL driver.
dvi: {Plug and Play Service: Device Install for ROOTSAMPLE000}
! dvi: Installing NULL driver!
dvi: {DIF_ALLOW_INSTALL} 09:34:28.291
dvi: Default installer: Enter 09:34:28.292
dvi: Default installer: Exit
dvi: {DIF_ALLOW_INSTALL - exit(0xe000020e)} 09:34:28.293
dvi: {DIF_REGISTER_COINSTALLERS} 09:34:28.293
dvi: Default installer: Enter 09:34:28.294
dvi: Default installer: Exit
dvi: {DIF_REGISTER_COINSTALLERS - exit(0x00000000)} 09:34:28.294
dvi: {DIF_INSTALLDEVICE} 09:34:28.295
dvi: Default installer: Enter 09:34:28.295
! dvi: Installing NULL driver!
dvi: Install Null Driver: Removing device sub-tree. 09:34:28.297
dvi: Install Null Driver: Removing device sub-tree completed. 09:34:28.300
dvi: Install Null Driver: Restarting device. 09:34:28.304
dvi: Install Null Driver: Restarting device completed. 09:34:28.306
dvi: Device Status: 0x01802401, Problem: 0x1c (0x00000000)
dvi: Install Device: Starting device 'ROOTSAMPLE000'. 09:34:28.307
dvi: Install Device: Starting device completed. 09:34:28.310
dvi: Default installer: Exit
dvi: {DIF_INSTALLDEVICE - exit(0x00000000)} 09:34:28.311
ump: {Plug and Play Service: Device Install exit(00000000)}
ndv: {Update Device Driver - exit(e0000247)}
!!! ndv: Failed to install device instance 'ROOTSAMPLE000'. Error = 0xe0000247
<<< Section end 2020/06/28 09:34:28.316
<<< [Exit status: FAILURE(0xe0000247)]
Indeed, using the following signtool command line, shows that the file is not signed :
C:UsersSCOsourcereposUSB_UDE_Samplegeneres>"C:Program Files (x86)Windows Kits10bin10.0.19041.0x64signtool.Exe" verify /v /kp /c kmdfsamples.cat hostude.inf
Verifying: hostude.inf
File is signed in catalog: C:UsersSCOsourcereposUSB_UDE_Samplegenereskmdfsamples.cat
Hash of file (sha1): 91E53BD8390C9843F9B856C2138CBF1A6BAFB3EA
SignTool Error: No signature found.
SignTool Error: File not valid: hostude.inf
Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1
Unfortunately, when I right click the driver file (hostude.sys), I can see the pane showing the certificate.
What is wrong here ? What could explain the discrepancy ? I’m pretty new into the WDK stuff and can’t explain this to me.
12 / 12 / 0 Регистрация: 04.07.2011 Сообщений: 287 |
|
1 |
|
14.08.2015, 10:47. Показов 17787. Ответов 12
Добрый вечер! Не удается скомпилировать проект: При попытке скомпилировать вылезает следующая ошибка: Система: Что делать? И другой вопрос: Добавлено через 13 часов 50 минут
__________________
0 |
Ушел с форума 16454 / 7418 / 1186 Регистрация: 02.05.2013 Сообщений: 11,617 Записей в блоге: 1 |
|
14.08.2015, 13:37 |
2 |
Как убрать сообщение о неизвестном издателе Купить себе Authenticode-сертификат у одного из удостоверяющих центров — Если развертывание выполняется в закрытой среде, можно сделать самопальный
1 |
12 / 12 / 0 Регистрация: 04.07.2011 Сообщений: 287 |
|
14.08.2015, 14:58 [ТС] |
3 |
Убежденный, а сертификат созданный в makecert будет работать на других компьютерах? Или сертификат будет работать (доверенный издатель) только на моем пк ?
0 |
Ушел с форума 16454 / 7418 / 1186 Регистрация: 02.05.2013 Сообщений: 11,617 Записей в блоге: 1 |
|
14.08.2015, 14:59 |
4 |
Будет работать на всех компьютерах, где вы его предварительно установите.
1 |
12 / 12 / 0 Регистрация: 04.07.2011 Сообщений: 287 |
|
14.08.2015, 15:08 [ТС] |
5 |
Убежденный, т.е. если кто то запустит установщик Click Once, то я не смогу убрать слово неизвестный издатель ? (ведь мне нужно каким то образом перед этим установить сертификат)
0 |
Ушел с форума 16454 / 7418 / 1186 Регистрация: 02.05.2013 Сообщений: 11,617 Записей в блоге: 1 |
|
14.08.2015, 15:13 |
6 |
Да, именно так.
0 |
12 / 12 / 0 Регистрация: 04.07.2011 Сообщений: 287 |
|
14.08.2015, 16:19 [ТС] |
7 |
Убежденный, Значит бесплатно неизвестного издателя никак не убрать?
0 |
Ушел с форума 16454 / 7418 / 1186 Регистрация: 02.05.2013 Сообщений: 11,617 Записей в блоге: 1 |
|
14.08.2015, 18:35 |
8 |
Никак.
0 |
50 / 49 / 13 Регистрация: 23.11.2015 Сообщений: 401 |
|
24.07.2016, 16:01 |
9 |
Извиняюсь за подъем старой темы. Столкнулся с этой же проблемой. А что делать, если я не фирма, а частный разработчик и только учусь вообще что-либо делать.. хотел изучить VB .Net, после опыта работы с VBA в Excel. Мне тоже надо покупать сертификат, что бы кому то показать мои «хэллоу ворлды» ? Студия комьюнти 2015 не публикует.. про подписи произошла ошибка…
0 |
Ушел с форума 16454 / 7418 / 1186 Регистрация: 02.05.2013 Сообщений: 11,617 Записей в блоге: 1 |
|
24.07.2016, 16:11 |
10 |
Мне тоже надо покупать сертификат, что бы кому то показать мои «хэллоу ворлды» ? Нет.
1 |
50 / 49 / 13 Регистрация: 23.11.2015 Сообщений: 401 |
|
24.07.2016, 17:13 |
11 |
Тогда как мне собрать программу из Visual Studio Community 2015? Пишет во время публикации signtool.exe не найден в папке с VB.. Добавлено через 31 минуту
0 |
Ушел с форума 16454 / 7418 / 1186 Регистрация: 02.05.2013 Сообщений: 11,617 Записей в блоге: 1 |
|
24.07.2016, 22:22 |
12 |
Скорее всего, это проблема неправильно настроенной (или неправильно [VS2015] “An error occurred while signing: SignTool.exe not found”
2 |
50 / 49 / 13 Регистрация: 23.11.2015 Сообщений: 401 |
|
25.07.2016, 07:05 |
13 |
Спасибо! Добавлено через 30 минут Добавлено через 11 минут http://stackoverflow.com/quest… -not-found
0 |
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 FilesMicrosoft SDKsWindowsv7.1bin"
-
makecert -r -sv C:certdriver.pvk -n CN="remontka" C:certdriver.cer
-
cert2spc C:certdriver.cer C:certdriver.spc
-
pvk2pfx -pvk C:certdriver.pvk -pi password -spc C:certdriver.spc -pfx C:certdriver.pfx -po password
- До этого этапа всё должно пройти как на скриншоте ниже, командную строку не закрываем.
- В папке C:cert создайте вложенную папку, например, drv и поместите туда свои файлы драйвера. Но: если вам требуется драйвер только для x64, не копируйте .inf файл для x86 систем в эту папку и наоборот. В командной строке используем следующие команды:
-
cd C:WinDDK7600.16385.1binselfsign
-
inf2cat.exe /driver:"C:certdrv" /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:certdrvcatalog.cat. Далее используем следующие команды (требуется подключение к Интернету).
-
cd "C:Program FilesMicrosoft SDKsWindowsv7.1bin"
-
signtool sign /f C:certdriver.pfx /p password /t http://timestamp.verisign.com/scripts/timestamp.dll /v C:certdrvcatalog.cat
- Результат подписи файла драйвера без ошибок на скриншоте ниже. Следующий шаг — добавить самоподписанный сертификат в список доверенных в системе, сделать это можно следующими двумя командами по порядку
-
certmgr.exe -add C:certdriver.cer -s -r localMachine ROOT certmgr.exe -add C:certdriver.cer -s -r localMachine TRUSTEDPUBLISHER
- В результате вы должны получить сообщение «CertMgr Succeeded». Если Failed или certmgr.exe не является внутренней или внешней командой — убедитесь, что командная строка запущена от имени администратора, а вы находитесь в нужной папке (см. 15 шаг).
И вот теперь можно закрыть командную строку и установить драйвер из папки C:certdrv с помощью диспетчера устройств, или нажав правой кнопкой по .inf файлу и выбрав пункт «Установить». Потребуется подтвердить установку драйвера в окне «Не удалось проверить издателя этих драйверов» — нажать «Все равно установить этот драйвер».
Обратите внимание, что возможные ошибки в диспетчере устройств, отображаемые для устройства с самостоятельно подписанным драйвером обычно не имеют отношения непосредственно к процессу подписи (та же ошибка для них будет появляться и без подписи, при простом отключении проверки цифровой подписи драйверов в особых вариантах загрузки). Т.е. искать причину в этом случае нужно в чем-то ещё и читать подробную инструкцию по использованию драйвера (например, в случае драйверов для FlashTool).
Содержание
- Как установить драйвер без цифровой подписи
- Способ 1: Временное отключение проверки
- Способ 2: Редактор групповой политики
- Способ 3: Командная строка
- Вопросы и ответы
Иногда при установке абсолютно любого драйвера могут возникнуть проблемы. Одной из них является проблема с проверкой цифровой подписи драйвера. Дело в том, что по умолчанию можно инсталлировать только то ПО, которое имеет подпись. Причем эта подпись должна быть в обязательном порядке проверена компанией Microsoft и иметь соответствующий сертификат. Если такая подпись отсутствует, система просто напросто не позволит инсталлировать такое ПО. В данной статье мы расскажем вам о том, как обойти такое ограничение.
Как установить драйвер без цифровой подписи
В некоторых случаях даже самый проверенный драйвер может оказаться без соответствующей подписи. Но это не значит, что ПО вредоносное или плохое. Чаще всего от проблем с цифровой подписью страдают владельцы Windows 7. В последующих версиях ОС этот вопрос возникает гораздо реже. Выявить проблему с подписью можно по следующим симптомам:
Исправить все описанные выше проблемы и ошибки можно, лишь отключив обязательную проверку наличия цифровой подписи у драйвера. Предлагаем вам несколько способов, которые помогут справиться с этой задачей.
Способ 1: Временное отключение проверки
Для вашего удобства мы разделим этот способ на две части. В первом случаем мы расскажем о том, как применить данный способ, если у вас установлена Windows 7 или ниже. Второй вариант подойдет лишь обладателям Windows 8, 8.1 и 10.
Если у вас Windows 7 или ниже
- Перезагружаем систему абсолютно любым способом.
- Во время перезагрузки жмем кнопку F8 для появления окна с выбором режима загрузки.
- В появившемся окне выбираем строку «Отключение обязательной проверки подписи драйверов» или «Disable Driver Signature Enforcement» и жмем кнопку «Enter».
- Это позволит загрузить систему с временно отключенной проверкой драйверов на наличие подписи. Теперь остается лишь инсталлировать необходимое ПО.
Если у вас Windows 8, 8.1 или 10
- Перезагружаем систему, зажав предварительно клавишу «Shift» на клавиатуре.
- Ждем, пока перед выключением компьютера или ноутбука не появится окно с выбором действия. В этом окне выбираем пункт «Диагностика».
- В следующем окне диагностики следует выбрать строку «Дополнительные параметры».
- Следующим шагом будет выбор пункта «Параметры загрузки».
- В следующем окне ничего выбирать не нужно. Следует просто нажать кнопку «Перезагрузить».
- Начнется перезагрузка системы. В результате вы увидите окно, в котором необходимо выбрать нужные нам параметры загрузки. В нем необходимо нажать клавишу F7 для выбора строки «Отключить обязательную проверку подписи драйверов».
- Как и в случае с Windows 7, система загрузится с временно отключенной службой проверки подписи устанавливаемого ПО. Вы сможете инсталлировать нужный вам драйвер.
Независимо от того, какая у вас операционная система, этот способ имеет недостатки. После очередной перезагрузки системы, проверка подписей снова запустится. В некоторых случаях это может привести к блокировке работы драйверов, которые были инсталлированы без соответствующих подписей. Если такое произошло, вам следует отключить проверку насовсем. В этом вам помогут дальнейшие способы.
Способ 2: Редактор групповой политики
Этот способ позволит вам отключить проверку подписей навсегда (или до того момента, как вы сами ее активируете). После этого вы сможете спокойно инсталлировать и пользоваться софтом, который не имеет соответствующего сертификата. В любом случае, этот процесс можно обратить и включить проверку подписи обратно. Так что бояться вам нечего. Кроме того, этот способ подойдет владельцам любой ОС.
- Жмем на клавиатуре одновременно клавиши «Windows» и «R». Запустится программа «Выполнить». В единственную строку вводим код
gpedit.msc
. Не забываем после этого нажать кнопку «ОК» либо «Enter». - В результате откроется редактор групповой политики. В левой части окна будет находиться дерево с конфигурациями. Вам необходимо выбрать строку «Конфигурация пользователя». В открывшемся списке нажимаем два раза на папку «Административные шаблоны».
- В открывшемся дереве открываем раздел «Система». Далее открываем содержимое папки «Установка драйвера».
- В этой папке по умолчанию находятся три файла. Нас интересует файл с названием «Цифровая подпись драйверов устройств». Кликаем на этом файле два раза.
- В левой части открывшегося окна необходимо поставить галочку напротив строки «Отключено». После этого не забудьте нажать «ОК» в нижней области окна. Это позволит применить новые настройки.
- В результате обязательная проверка будет отключена и вы сможете инсталлировать софт без подписи. В случае необходимости в этом же окне необходимо просто установить галочку напротив строки «Включено».
Способ 3: Командная строка
Этот способ весьма прост в использовании, но имеет свои недостатки, о которых мы расскажем в конце.
- Запускаем «Командную строку». Для этого жмем сочетание клавиш «Win» и «R». В открывшемся окне вводим команду
cmd
. - Обращаем ваше внимание, что все способы, позволяющие открыть «Командную строку» в Windows 10, описаны в нашем отдельном уроке.
- В «Командной строке» необходимо ввести поочередно следующие команды, нажимая «Enter» после каждой из них.
- В результате у вас должна получиться следующая картина.
- Для завершения вам необходимо лишь перезагрузить систему любым известным вам способом. После этого проверка подписи будет отключена. Минусом, о котором мы говорили в начале этого способа, является включение тестового режима системы. Он практически не отличается от обычного. Правда в правом нижнем углу вы будете постоянно видеть соответствующую надпись.
- Если в будущем вам понадобиться включить обратно проверку подписей, вам необходимо лишь заменить параметр «ON» в строке
bcdedit.exe -set TESTSIGNING ON
на параметр «OFF». После этого снова произвести перезагрузку системы.
Урок: Открытие командной строки в Windows 10
bcdedit.exe -set loadoptions DISABLE_INTEGRITY_CHECKS
bcdedit.exe -set TESTSIGNING ON
Обратим ваше внимание, что этот способ иногда приходится проделывать в безопасном режиме. Как запустить систему в безопасном режиме, вы можете узнать на примере нашего специального урока.
Урок: Как войти в безопасный режим в Windows
Воспользовавшись одним из предложенных способов, вы избавитесь от проблемы инсталляции сторонних драйверов. Если у вас возникли трудности с выполнением каких-либо действий, пишите об этом в комментариях к статье. Будем совместно решать возникшие трудности.
Еще статьи по данной теме:
Помогла ли Вам статья?
Здравствуйте!
Мы являемся разработчиками аппаратного обеспечения. Нам необходимо, чтобы наше оборудование работало под 64-битной версией операционной системы Windows 7, в связи с этим приобрели сертификат VeriSign Class 3 Code Signing.
Вот наш алгоритм подписания:
1) В хранилище сертификатов добавлены наш сертификат и кросс VeriSign_cross.cer (Verisign Class 3 Code Signing 2009-2 CA)
2) Создаем файл каталога:
Inf2Cat.exe /v /driver:drv /os:XP_X64,Vista_X64,7_X64
3) Подписываем
SignTool.exe sign /v /ac VeriSign_cross.cer /s MY /n «HIDDEN» /t http://timestamp.verisign.com/scripts/timstamp.dll drvdriver.cat
4) Проверяем подпись
Signtool.exe verify /kp /v drvdriver.cat
и выдается:
———————————————————————————-
Verifying: drvdriver.cat
Hash of file (sha1): BCA279D100D51538686DAC07DD19450BCBB34FE4
Signing Certificate Chain:
Issued to: Class 3 Public Primary Certification Authority
Issued by: Class 3 Public Primary Certification Authority
Expires: Wed Aug 02 03:59:59 2028
SHA1 hash: 742C3192E607E424EB4549542BE1BBC53E6174E2
Issued to: VeriSign Class 3 Code Signing 2009-2 CA
Issued by: Class 3 Public Primary Certification Authority
Expires: Tue May 21 03:59:59 2019
SHA1 hash: 12D4872BC3EF019E7E0B6F132480AE29DB5B1CA3
Issued to: HIDDEN
Issued by: VeriSign Class 3 Code Signing 2009-2 CA
Expires: Thu Jun 30 03:59:59 2011
SHA1 hash: B6FF93FC58BA00510A960D2FE725858499BC2926
The signature is timestamped: Fri Jul 02 16:03:55 2010
Timestamp Verified by:
Issued to: Thawte Timestamping CA
Issued by: Thawte Timestamping CA
Expires: Fri Jan 01 03:59:59 2021
SHA1 hash: BE36A4562FB2EE05DBB3D32323ADF445084ED656
Issued to: VeriSign Time Stamping Services CA
Issued by: Thawte Timestamping CA
Expires: Wed Dec 04 03:59:59 2013
SHA1 hash: F46AC0C6EFBB8C6A14F55F09E2D37DF4C0DE012D
Issued to: VeriSign Time Stamping Services Signer — G2
Issued by: VeriSign Time Stamping Services CA
Expires: Fri Jun 15 03:59:59 2012
SHA1 hash: ADA8AAA643FF7DC38DD40FA4C97AD559FF4846DE
SignTool Error: Signing Cert does not chain to a Microsoft Root Cert.
Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1
———-
windows7x64 отказывается загружать драйвер, ссылаясь на то, что драйвер неподписан.
Что мы делаем не правильно? Пробовали так же подписывать sys файл, но результат тот же