Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/241: Рейтинг темы: голосов - 241, средняя оценка - 4.81
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1

Инструкция: подписывание драйверов для Windows 10 (EV)

12.08.2016, 21:32. Показов 53141. Ответов 47

Студворк — интернет-сервис помощи студентам
Эта статья - быстрый онлайн-помощник для тех, кто переходит на новое
подписывание драйверов в Windows 10 (EV, WHDC-портал). Здесь я постараюсь
дать основные рекомендации, чтобы помочь избежать глупых ошибок и, не
теряя времени, скорее адаптировать свои проекты под новые требования.

Для того, чтобы начать подписывать драйверы по-новому, вам потребуется:

* EV-сертификат, приобретенный у Symantec, DigiCert, GlobalSign, WoSign
или Entrust. В тот момент, когда пишутся эти строки, поддерживаются только
сертификаты, приобретенные в перечисленных выше организациях. В будущем список,
вероятно, будет дополняться.

По тексту ниже подразумевается, что сертификат уже установлен на вашем компьютере.

* Аккаунт на Microsoft (LiveID). Регистрация там бесплатная и занимает несколько минут.

* Утилита signtool с поддержкой SHA256. Утилиту лучше взять из последних версий WDK
(8 и выше), так как старые версии не поддерживают SHA256 и некоторые другие возможности,
которые вам потребуются.

* Несколько часов свободного времени.

Первое, что вам нужно сделать - зарегистрировать свою компанию на портале WHDC.
Идем сюда:

Microsoft Hardware Dev Center
https://developer.microsoft.co... s/hardware

жмем 'Dashboard' и логинимся в свой аккаунт Microsoft.

Далее вам будет предложено скачать файл winqual.exe, подписать его своим сертификатом и
загрузить обратно. Так портал определяет валидность сертификата, а также сможет сопоставить
цифровую подпись с вашей компанией, если это будет необходимо. Команда подписи для
signtool.exe затруднений вызывать не должна:
Code
1
signtool.exe sign /n "My EV Certificate Name" /a /fd SHA256 /tr http://timestamp.globalsign.com/?signature=sha2 /td SHA256 winqual.exe
Для вашего сертификата опции могут быть немного другие. Обратите внимание на ключи /fd и /td -
они указывают, что и для цифровой подписи, и для timestamp-сервера следует использовать
SHA256, а не SHA1. EV-сертификаты используют только SHA2. Также обратите внимание,
что здесь и далее больше не будут использоваться никакие кросс-сертификаты (ключ /ac),
так как для 'attestation signing' (подписывание драйверов через веб-портал) это не требуется.

Точно такой же командой вы будете подписывать submission (архив с файлами для подписи).

Подписав и загрузив winqual.exe, вы попадете на страницу, где вам предложат указать
сведения о компании - название, юридический адрес, почтовый индекс, телефон, e-mail...
Судя по всему, эта информация не проверяется и нужна только "для галочки".
Но указывать откровенно "липовые" данные, разумеется, не стоит.

Вот и все, теперь вы успешно зарегистрированы на веб-портале WHDC.
Осталось немного - дать нужные разрешения (permissions), а также подписать несколько
соглашений, которые предлагает вам Microsoft (по поводу Anti-Malware, DRM и остальные в
таком же духе, всего штук 10). Я не буду подробно описывать нужные шаги, т.к. они
достаточно очевидны.

После этого вам необходимо перелогиниться на веб-портале (выйти и зайти снова), чтобы
изменения вступили в силу.

Подписывание драйвера.

Сначала вам нужно создать cab-архив с файлами для подписи внутри.
Если пакет драйверов только один, cab-файл должен иметь такую структуру:
Code
1
2
3
DriverPackage\
    mydriver.sys
    mydriver.inf
Если пакетов драйверов несколько, тогда добавляется нумерация:
Code
1
2
3
4
5
6
7
8
9
10
DriverPackage1\
    drv1.sys
    drv1.inf
DriverPackage2\
    drv2.sys
    drv2.inf
...
DriverPackageN\
    drvN.sys
    drvN.inf
INF-файл обязателен, даже если у вас legacy-драйвер, которому INF не нужен.
Так что если вы никогда не делали INF-файлов, придется этому научиться.
Для legacy-драйверов можно использовать следующую заглушку, поставив
только правильные названия:
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
;
; TODO: Add copyright info here.
;
 
[Version]
Signature                = "$Chicago$"
Provider                 = %Provider%
Class                    = "LegacyDriver"
ClassGuid                = {8ECC055D-047F-11D1-A537-0000F8753ED1}
DriverVer                = 07/24/2015,1.0.0.0
DriverPackageType        = KernelService
DriverPackageDisplayName = %PackageDisplayName%
CatalogFile              = setup.cat
 
[DefaultInstall]
CopyFiles = Setup.CopyFiles
 
[DefaultInstall.Services]
AddService = mydriver,,Setup.AddService
 
[SourceDisksFiles]
mydriver.sys = 1
 
[SourceDisksNames]
1 = "Disk"
 
[DestinationDirs]
DefaultDestDir = 12 ; "system32\drivers" directory.
 
[Setup.CopyFiles]
mydriver.sys
 
[Setup.AddService]
ServiceName   = mydriver
DisplayName   = %DrvDisplayName%
Description   = %DrvDescription%
ServiceType   = 1 ; SERVICE_KERNEL_DRIVER
StartType     = 1 ; SERVICE_SYSTEM_START
ErrorControl  = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\mydriver.sys ; 12 - "system32\drivers" directory.
 
[Strings]
Provider           = "My Driver Provider Name"
PackageDisplayName = "My Driver Package Display Name"
DrvDisplayName     = "MyDriver"
DrvDescription     = "My Driver Description"


Я сразу советую проверять, валиден ли ваш INF-файл, используя утилиту inf2cat из WDK.
Например:
Code
1
inf2cat.exe /v /DRV:C:\MyDriverPackage /OS:XP_X64
Для создания cab-архива можно использовать разные программы, но проще всего
задействовать штатную утилиту Windows под названием makecab:
Code
1
makecab.exe /f путь-к-файлу-ddf
В файле ddf описываются директивы для создания cab-архива.
Я использую примерно такой шаблон:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.OPTION EXPLICIT
.Set CabinetFileCountThreshold=0
.Set FolderFileCountThreshold=0
.Set FolderSizeThreshold=0
.Set MaxCabinetSize=0
.Set MaxDiskFileCount=0
.Set MaxDiskSize=0
.Set CompressionType=MSZIP
.Set Cabinet=on
.Set Compress=on
.Set CabinetNameTemplate=submission-8.cab
.Set DestinationDir=DriverPackage1
C:\SUBMISSIONS\MyDriver1\64\MyDriver1.sys
C:\SUBMISSIONS\MyDriver1\64\setup.inf
.Set DestinationDir=DriverPackage2
C:\SUBMISSIONS\MyDriver2\64\MyDriver2.sys
C:\SUBMISSIONS\MyDriver2\64\setup.inf
Файл cat, который сгенерировала утилита inf2cat.exe, в архив класть не нужно,
он все равно будет проигнорирован и портал при подписи создаст новый.

Важный момент: все пакеты драйверов в архиве должны быть под какую-то одну
архитектуру - или x64, или x86. На MSDN пишут, что Driver Package может
быть под обе архитектуры, но как правильно их упаковать в cab-архив - я
так и не понял. Попытки добавить еще один уровень в дереве папок внутри
архива (32/64, x86/x64, i386/amd64) успехом не увенчались.
Видимо, самый простой путь - делать две submission, одну чисто под x64,
вторую чисто под x86.

Когда cab-архив будет готов, вам нужно подписать его своим сертификатом.

Далее на веб-портале идем в раздел 'File signing services' и выбираем
пункт 'Create driver signing submission'. После этого все очень просто:
вы указываете название своей submission (произвольное, это нужно только
для информативных целей), является ли ваш драйвер универсальным (см. концепцию
'Universal Driver' в MSDN), а также платформы, под которые собран драйвер,
их в настоящий момент четыре:

Microsoft Windows 10 AU Client family, x86
Microsoft Windows 10 AU Client family, x64
Microsoft Windows 10 Client family, x86
Microsoft Windows 10 Client family, x64

C x64/x86 все понятно, а вот разницу между Client и AU Client я не нашел -
подпись в конечном итоге получается одинаковая.

После этого вы загружаете свой cab-архив и жмете 'Submit'. Все.

Обработка submission (процесс называется review) занимает некоторое время, у
меня было где-то около 15 минут, иногда может затянуться, как пишут, на
часы или даже сутки. Но обычно слишком долгий процесс обработки submission -
признак того, что что-то пошло не так и процесс будет завершен с ошибкой.

По завершении вам придет письмо на почту и архив с подписанными файлами можно
будет скачать там же, на веб-портале.

Кстати, можно запостить сразу несколько submission - они обрабатываются
параллельно и в некоторых случаях можно сэкономить немного времени.

В сведениях о цифровой подписи файлов, которые вам вернет портал, вы с удивлением
(а кто-то, возможно, и с радостью) обнаружите, что вместо 'OOO Vasya Pupkin' будет
вписано безликое и ужасное 'Microsoft Windows Hardware Compatibility Publisher'.

Теперь драйвер можно ставить и запускать на Windows 10 - 1607 и никакие
Secure Boot, Device Guard и т.п. не помеха.

----------------------------------------------------------------------------------

Теперь вопросы чисто практического плана.

Q: Как быть с предыдущими версиями Windows (Vista, Windows 7, Windows 8, Windows 8.1)?

A: К сожалению, здесь без вариантов: либо вам придется купить еще один сертификат SHA1 и
использовать его, либо попробуйте пройти HLK-тесты через веб-портал и тогда получите
подпись, которую понимают все указанные выше версии Windows.

Прохождение HLK-тестов - достаточно большой и серьезный "квест", затрагивать эту
тему здесь я не буду.

Q: Как быть с Windows Server 2016 (vNext)? Его ведь нету в списке при отправке
submission на веб-портале...

A: Для Windows Server 2016 прохождение HLK-тестов для драйвера - единственный
легальный способ поддержки, другие типы цифровых подписей система принимать
не будет. Так что ждите через некоторое время очередную статью от меня про HLK.

Q: Как обстоят дела с двойными сигнатурами?

A: Портал добавляет свою подпись, не затирая старую. Поэтому можно, например,
подписать .sys-файл сначала стандартным сертификатом с SHA1 старым способом с
кросс-сертификатом (cross-signing), а затем отправить его на веб-портал, где
ему будет добавлена вторая подпись SHA256 для Windows 10 (attestation signing).
Такой драйвер сможет запускаться на любых версиях Windows.

Однако в случае с cat-файлами это не сработает, потому что, как уже писалось выше,
портал генерирует свой cat-файл, игнорируя тот, что лежит внутри cab-архива.

Поэтому, если ваш драйвер ставится через INF-файл и вы хотите поддерживать
максимально возможный диапазон версий Windows, придется иметь несколько
пакетов драйвера, один для систем до Windows 10, второй для Windows 10 и выше.

Q: Что делать с модулями, которые собираются с ключом /INTEGRITYCHECK и,
согласно MSDN, должны подписываться с опцией /ph (generate page hashes)?
Например, драйвер, использующий Object Callbacks (ObRegisterCallbacks)?

A: Ничего не нужно. Система подписывания остается такой же, как и для
остальных драйверов Windows 10.

Q: EV-сертификат поставляется на USB-токене, это секьюрно, но неудобно.
У нас разработчики географически удалены друг от друга, а подписывать,
получается, может только один?

A: К сожалению, здесь действительно есть ряд неудобств.
Например, токен SafeNet не работает нормально в RDP-сессии и время
от времени начинает требовать ввод пароля (PIN).

Для решения этой проблемы можно настроить параметры, как написано здесь:

Automate Extended Validation (EV) code signing
http://stackoverflow.com/quest... de-signing

А также воспользоваться приведенным кодом и утилитой RemoteSignTool
(обертка над signtool.exe, работающая через интернет).

В настоящее время ведутся дебаты о том, чтобы оставить EV только для регистрации
на веб-портале, а для подписи submission использовать "обычные" сертификаты
(т.е. без USB-токенов и тому подобного):

EV Cert to be Requires for EVERY sysdev submission...
http://www.osronline.com/showt... ink=278314
10
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.08.2016, 21:32
Ответы с готовыми решениями:

И еще про подписывание драйверов на Windows 10
Сначала только факты. 1. Начиная с Windows 10 и Windows Server 2016 (vNext), все драйверы режима ядра должны быть подписаны...

Подписывание драйверов на Windows 10 Anniversary Update (1607)
В продолжение темы: https://www.cyberforum.ru/drivers-programming/thread1514087.html Напомню кратко: когда Windows 10 еще готовилась...

Подписывание драйверов из Visual Studio 2013 (как настроить?)
Добрый день! Помогите настроить Один раз мне уже удалось настроить Visual Studio 2013 на автоматическое подписывание купленным...

47
0 / 0 / 0
Регистрация: 07.05.2016
Сообщений: 12
25.08.2017, 11:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Убежденный Посмотреть сообщение
Пробовал проверять .inf-файл утилитами inf2cat и chkinf?
inf2cat у меня работает при каждом релизе, когда скрипт изготавливает INF.

chkinf раньше не пробовал, сейчас запустил - она посчитала ошибкой то, что строка не заключена в кавычки:

DriverFile=vrtaucbl.sys

Мне всегда казалось, что строковые переменные подставляются тупо, вместе с кавычками, если они есть. Надо будет попробовать добавить кавычки.
0
0 / 0 / 0
Регистрация: 07.05.2016
Сообщений: 12
31.12.2017, 18:27
Цитата Сообщение от Убежденный Посмотреть сообщение
все пакеты драйверов в архиве должны быть под какую-то одну архитектуру - или x64, или x86.
Позавчера и вчера успешно подписались пакеты вот такой структуры:

Структура DDF
.Set DestinationDir=std_trial
std_trial\vrtaucbl.inf

.Set DestinationDir=std_trial\x86
std_trial\x86\vrtaucbl.sys

.Set DestinationDir=std_trial\x64
std_trial\x64\vrtaucbl.sys


.Set DestinationDir=std_full
std_full\vrtaucbl.inf

.Set DestinationDir=std_full\x86
std_full\x86\vrtaucbl.sys

.Set DestinationDir=std_full\x64
std_full\x64\vrtaucbl.sys


.Set DestinationDir=ntx_trial
ntx_trial\vrtaucbl.inf

.Set DestinationDir=ntx_trial\x86
ntx_trial\x86\vrtaucbl.sys

.Set DestinationDir=ntx_trial\x64
ntx_trial\x64\vrtaucbl.sys


.Set DestinationDir=ntx_full
ntx_full\vrtaucbl.inf

.Set DestinationDir=ntx_full\x86
ntx_full\x86\vrtaucbl.sys

.Set DestinationDir=ntx_full\x64
ntx_full\x64\vrtaucbl.sys


То есть, четыре сборки, в каждой по модулю x86 и x64. В портале отмечал галочками все предлагаемые виды подписей, кроме ARM. Так что жить можно.
0
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
10.07.2025, 01:08
Прошу прощения за оффтоп, но процесс регистрации в Microsoft в качестве разработчика поменялся.
Есть EV сертификат, есть готовый драйвер, но не получается зарегистрироваться в "Hardware Developer Program".

Может кто-нибудь знает актуальную инструкцию?

P.s. Каждый день плачу, что Убежденный, ушел с форума

P.s2. Возможно из России сейчас невозможна регистрация?
Миниатюры
Инструкция: подписывание драйверов для Windows 10 (EV)  
0
Модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для NoNaMe
2622 / 759 / 164
Регистрация: 10.06.2009
Сообщений: 2,986
08.08.2025, 22:12
Nalik, осталась возможность через посредника. Получаем сертификат соотвествия у M$, а дальше идем к посреднику у которого можно подписать.
1
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
08.08.2025, 22:36
NoNaMe, инструкция Убежденный к сожалению чуть-ли не полностью устарела. Сейчас шаги регистрации значительно усложнились.
- Нужно создать аккаунт в Microsoft Entra (внутри Azure).
- Потом заполнять анкету.
- Потом ты подписываешь предложенный ими файл "SignableFile.bin" своим EV-сертификатом.
- Потом потребуется пройти верификацию личность (Identity verification) с загрузкой документов через сервис AU10TIX.
- Потом идет проверка занятости, так называемая "Employment verification".
- Потом проверка бизнеса "Business verification".
Возможно есть еще какие-то шаги, но мне о них не известно.
При чем способы проверки, анкеты и т.д. могу отличаться от страны к стране, но в общих чертах все +- будет одинаково.
Так же на любом из этих этапов можно зависнуть от нескольких дней, до нескольких недель. Поскольку в любой момент может например не приходить письмо подтверждения на почту, или ты не сможешь принять звонок от MS. Поддержка отвечает крайне долго и не охотно. Регистрация может пройти и гладко, но наверно это нужно быть везунчиком. Даже сайт регистрации у них довольно сильно подвисает. А и да, из РФ можете не пробовать даже зарегаться, РФ у них в ЧС.
0
Модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для NoNaMe
2622 / 759 / 164
Регистрация: 10.06.2009
Сообщений: 2,986
08.08.2025, 23:32
Nalik, на сколько зная, если хоть частичная деятельность будет замечена со странами из ЧС, они просто могут ничего не отвечать.
0
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
08.08.2025, 23:34
Лучший ответ Сообщение было отмечено NoNaMe как решение

Решение

NoNaMe, так и есть. Как только достоверно узнали, что я из страны ЧС - сразу игнор. Тикеты просто закрываются без обратных сообщений.
0
0 / 0 / 0
Регистрация: 08.12.2025
Сообщений: 1
08.12.2025, 22:48
NoNaMe, Подскажи пожалуйста, может ты знаешь каких то посредников кто может с этим помочь? Был бы очень признателен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.12.2025, 22:48

WDK Windows. IDE для драйверов
Привет,народ! Сегодня вам вопрос на засыпку: IDE для драйверов. Название,где раздобыть и за сколько.

Поиск драйверов для Windows XP х32
Здравствуйте. Переустановил операционную систему на WinXP на 32 битную. Она полностью чистая и без драйверов. Нужны именно драйвера. ...

А сайте HP нет драйверов для windows 7
Hp G6 2206sr на сайте эйчпи дрова только для вин8,а у мменя 7. может кто подскажет как установить эти дрова-

Настройка драйверов на звук для Windows 10 64bit
Имеется акустика 5.1, а также установленный Windows 10 на ПК. Проблема с драйверами на звук для материнской платы Asus Z170 Pro Gaming....

Настройка VS под windows 7 для написания драйверов
работаю в windows 7 64 нужно написать простейший драйвер под windows 7 64 что ставить , какие версии? проблема в том что после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru