Драйверы Windows для подписывания аттестации
В этой статье описывается, как подписать драйвер с помощью подписи аттестации. Подробные сведения и требования к подписи аттестации см. в статье с подписанными драйверами аттестации Windows 10.
Внимание
По состоянию на 1 марта 2023 года аттестация подписанных драйверов, предназначенных для розничной аудитории, больше не публикуется на Обновл. Windows. Драйверы, подписанные аттестацией для сценариев тестирования, по-прежнему поддерживаются при выборе параметров CoDev или Test Registry Key / Surface SSRK .
Необходимые компоненты
Чтение и понимание требований для подписанных драйверов аттестации Windows 10.
Зарегистрируйтесь в программе разработчика оборудования. Если вы еще не зарегистрированы, выполните действия, описанные в разделе "Как зарегистрировать программу разработчика оборудования Microsoft Windows".
У вас должен быть сертификат подписи кода расширенной проверки (EV). Проверьте, уже ли у вашей организации есть сертификат подписи кода. Если у вашей организации уже есть сертификат, у вас есть сертификат. Если у вашей организации нет сертификата, необходимо приобрести сертификат EV.
Следуйте инструкциям в разделе "Скачать комплекты и средства для Windows 10 ", чтобы скачать и установить комплект драйверов Windows (WDK).
(Необязательно) Скачайте пример драйвера эхо, используемый в этой статье.
Создание CAB-файла
В этом разделе описан процесс создания отправки CAB-файлов. Мы используем пример эхо-драйвера для иллюстрации процесса.
Типичная отправка CAB-файла должна содержать:
Сам драйвер, например Echo.sys
INF-файл драйвера, используемый панелью мониторинга для упрощения процесса подписывания.
Файл символов, используемый для отладки сведений. Например, Echo.pdb. PDB-файл необходим для средств автоматического анализа сбоев Майкрософт.
Файлы CAT каталога необходимы и используются только для проверки компании. Корпорация Майкрософт повторно создает файлы каталога и заменяет все отправленные файлы каталога.
Примечание.
Каждая папка драйвера в CAB-файле должна поддерживать один и тот же набор архитектур. Например, они должны поддерживать x86, x64 или все они должны поддерживать как x86, так и x64.
Не используйте UNC-пути к общей папке при ссылке на расположения драйверов (\\\server\share
). Необходимо использовать сопоставленное букву диска для допустимого CAB-подключения.
Чтобы создать CAB-файл, выполните следующие действия.
Соберите двоичные файлы для входа в один каталог. В этом примере мы используем
C:\\Echo
.Откройте окно командной строки от имени администратора.
Введите
MakeCab /?
, чтобы просмотреть параметры MakeCab:C:\Echo> MakeCab /? Cabinet Maker - Lossless Data Compression Tool MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination] MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...] source File to compress. destination File name to give compressed file. If omitted, the last character of the source file name is replaced with an underscore (_) and used as the destination. /F directives A file with MakeCAB directives (may be repeated). Refer to Microsoft Cabinet SDK for information on directive_file. /D var=value Defines variable with specified value. /L dir Location to place destination (default is current directory). /V[n] Verbosity level (1..3).
Подготовка входного файла cab-файла DDF. Для нашего драйвера Echo это может выглядеть примерно так:
;*** Echo.ddf example ; .OPTION EXPLICIT ; Generate errors .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 ;Specify file name for new cab file .Set CabinetNameTemplate=Echo.cab ; Specify the subdirectory for the files. ; Your cab file should not have files at the root level, ; and each driver package must be in a separate subfolder. .Set DestinationDir=Echo ;Specify files to be included in cab file C:\Echo\Echo.Inf C:\Echo\Echo.Sys
Введите следующую команду, чтобы создать CAB-файл.
C:\Echo> MakeCab /f "C:\Echo\Echo.ddf
Выходные данные MakeCab должны отображать количество файлов в созданном CAB-файле. В этом случае должно быть два файла.
C:\Echo> MakeCab /f Echo.ddf Cabinet Maker - Lossless Data Compression Tool 17,682 bytes in 2 files Total files: 2 Bytes before: 17,682 Bytes after: 7,374 After/Before: 41.70% compression Time: 0.20 seconds ( 0 hr 0 min 0.20 sec) Throughput: 86.77 Kb/second
Найдите CAB-файл в подкаталоге
Disk1
. Вы можете выбрать CAB-файл в проводник, чтобы убедиться, что он содержит ожидаемые файлы.
Подписать CAB-файл с помощью сертификата EV
Чтобы подписать CAB-файл с сертификатом EV, используйте процесс, рекомендуемый поставщиком сертификатов EV. Например, чтобы подписать CAB-файл с помощью sha256 Certificate/Digest Algorithm/Timestamp, введите следующую команду:
C:\Echo> SignTool sign /s MY /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "C:\Echo\Disk1\Echo.cab"
Внимание
Не забудьте использовать отраслевые рекомендации по управлению безопасностью процесса подписывания кода EV.
Отправка подписанного CAB-файла EV с помощью Центра партнеров
Перейдите на панель мониторинга оборудования Центра партнеров и войдите с помощью учетных данных.
Выберите " Отправить новое оборудование".
В разделе "Пакеты и подписывание свойств" введите имя продукта для отправки драйвера. Это имя можно использовать для поиска и упорядочивания отправки драйверов.
Примечание.
Если вы поделитесь своим драйвером с другой компанией, они увидят это имя.
Оставьте оба параметра проверки подписывания без флажка.
Для запрошенных подписей выберите, какие подписи необходимо включить в пакет драйвера.
Перейдите вниз по странице и нажмите кнопку "Отправить".
После завершения процесса подписывания загрузите подписанный драйвер с аппаратной панели мониторинга.
Проверка правильности подписи драйвера
Выполните следующие действия, чтобы убедиться, что драйвер был правильно подписан.
После скачивания файла отправки извлеките файл драйвера.
Откройте окно командной строки от имени администратора.
Введите следующую команду, чтобы убедиться, что драйвер подписан должным образом.
C:\Echo> SignTool verify Echo.Sys
Чтобы получить дополнительные сведения и проверить все подписи в файле с несколькими подписями, введите следующую команду:
C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
Чтобы подтвердить EKUs драйвера, выполните следующие действия.
Откройте проводник Windows и найдите двоичный файл. Выберите файл и удерживайте его (или щелкните правой кнопкой мыши) и выберите пункт "Свойства".
На вкладке "Цифровые подписи" выберите указанный элемент в списке подписей .
Выберите "Сведения" и выберите "Просмотреть сертификат".
На вкладке "Сведения" выберите "Расширенное использование ключа".
Когда драйвер ушел в отставку на панели мониторинга, используется следующий процесс:
- Добавляет внедренную подпись Microsoft SHA2.
- Если двоичные файлы драйвера внедрены клиентом с собственными сертификатами, эти подписи не перезаписываются.
- Создает и подписывает новый файл каталога с помощью сертификата Microsoft SHA2. Этот каталог заменяет любой существующий каталог, предоставленный клиентом.
Тестирование драйвера в Windows
Используйте следующие инструкции для установки примера драйвера.
Откройте окно командной строки от имени администратора. Перейдите в папку пакета драйвера и введите следующую команду.
C:\Echo> devcon install echo.inf root\ECHO
Убедитесь, что процесс установки драйвера не отображает сообщение "Windows не может проверить издателя этого программного обеспечения драйвера". Диалоговое окно "Безопасность Windows".
Создание отправки с несколькими драйверами
Чтобы отправить несколько драйверов одновременно, выполните следующие действия.
Создайте подкаталог для каждого драйвера.
Подготовьте входной файл DDF CAB-файла, ссылающийся на подкаталоги. Оно должно выглядеть примерно следующим образом:
;*** Submission.ddf multiple driver example ; .OPTION EXPLICIT ; Generate errors .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 ;Specify file name for new cab file .Set CabinetNameTemplate=Echo.cab ;Specify files to be included in cab file ; First Driver .Set DestinationDir=DriverPackage1 C:\DriverFiles\DriverPackage1\Driver1.sys C:\DriverFiles\DriverPackage1\Driver1.inf ; Second driver .Set DestinationDir=DriverPackage2 C:\DriverFiles\DriverPackage2\Driver2.sys C:\DriverFiles\DriverPackage2\Driver2.inf