Аттестация подписанных драйверов Windows

В этой статье описывается, как подписать драйвер с помощью аттестационного подписания.

Замечание

Подписанные драйверы, аттестованные для розничной аудитории, не размещаются на клиентский компонент Центра обновления Windows. Поддержка драйверов, подписанных аттестацией, продолжается при тестировании сценариев с помощью параметров CoDev или Test Registry Key /Surface SSRK.

Предпосылки

  • Прочитайте и изучите требования к драйверам с аттестационной подписью для сценариев тестирования.

  • Зарегистрируйтесь в программе разработчика оборудования. Если вы не зарегистрированы, выполните действия, описанные в разделе Register для программы разработчика оборудования Майкрософт Windows.

  • У вас должен быть сертификат подписи кода расширенной проверки (EV). Проверьте, уже ли у вашей организации есть сертификат подписи кода.

    • Если у вас есть существующий сертификат, сделайте его доступным.

    • Если у вашей организации нет сертификата, приобретите сертификат EV.

  • Скачайте и установите пакет средств для оценки и развертывания Windows (Windows ADK), следуя процессу, описанному в Download и установите Windows ADK.

  • (Необязательно) Скачайте пример драйвера Echo, который доступен в GitHub.

Создание CAB-файла

Следующая процедура создает отправку CAB-файлов с помощью примера драйвера Echo для иллюстрации действий.

Типичная отправка CAB-файла должна содержать следующие компоненты:

  • Сам драйвер (например, Echo.sys).

  • Файл INF драйвера (INF-файл), используемый панелью мониторинга для упрощения процесса подписывания.

  • Файл символов, используемый для отладки сведений, таких как Echo.pdb. Файл .pdb требуется для Майкрософт средств автоматического анализа сбоев.

  • Файлы каталога (CAT) являются обязательными и используются только для проверки компании. Майкрософт повторно создает файлы каталога и заменяет все файлы каталога, отправленные ранее.

Замечание

Каждая папка драйвера в CAB-файле должна поддерживать один и тот же набор архитектур. Например, они должны поддерживать x86, x64 или все они должны поддерживать как x86, так и x64.

Не используйте UNC-пути общего доступа при ссылке на расположения драйверов (\server\share). Необходимо использовать сопоставленную букву диска для допустимости CAB.

Чтобы создать CAB-файл, выполните следующие действия.

  1. Соберите бинарные файлы для подписи в один каталог. В этом примере используется C:\Echo папка.

  2. Откройте окно командной строки с правами администратора.

  3. 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).
    
  4. Подготовьте входной файл для фреймворка описания устройства (DDF) в формате CAB. Для драйвера 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
    
  5. Введите следующую команду, чтобы создать 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
    
  6. Найдите CAB-файл в подкаталоге Disk1 . Вы можете выбрать CAB-файл в проводнике, чтобы убедиться, что он содержит ожидаемые файлы.

Подписать CAB-файл с помощью сертификата EV

Следующий шаг — подписать CAB-файл с помощью вашего EV-сертификата.

Используйте процесс, рекомендуемый поставщиком сертификатов EV. Например, чтобы подписать CAB-файл с помощью метки времени SHA256, введите следующую команду:

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 в Центре партнеров

Подписав CAB-файл, вы будете готовы отправить файл в Центре партнеров:

  1. Перейдите на панель мониторинга оборудования Центра партнеров и войдите с помощью учетных данных.

  2. Выберите "Отправить новое оборудование".

    Снимок экрана: список поданных заявок оборудования.

  3. В разделе "Пакеты и подписывание свойств" введите имя продукта для отправки драйвера. Используйте это имя для поиска и упорядочивания ваших заявок на драйверы.

    Замечание

    Имя отображается при совместном использовании драйвера с другой компанией.

  4. Оставьте оба параметра тестовой подписи не отмеченными (не выбрано).

  5. Для параметра "Запрошенные подписи" выберите подписи , которые необходимо включить в пакет драйвера:

    Снимок экрана: параметры отправки драйвера Echo для подписывания.

  6. Нажмите кнопку "Отправить " в нижней части страницы.

  7. После завершения процесса подписывания загрузите подписанный драйвер с аппаратной панели мониторинга.

Проверка правильности подписи драйвера

Убедитесь, что драйвер правильно подписан, выполнив следующие действия:

  1. После загрузки файла представления извлеките файл драйвера.

  2. Откройте окно командной строки с правами администратора.

  3. Введите следующую команду, чтобы убедиться, что драйвер подписан должным образом:

    C:\Echo> SignTool verify Echo.Sys
    
  4. Чтобы получить список других сведений и проверить все подписи в файле с несколькими подписями, введите следующую команду:

     C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
    
  5. Чтобы подтвердить использование расширенных ключей (EKUs) драйвера, выполните следующие действия.

    1. Откройте обозреватель Windows и найдите двоичный файл. Щелкните правой кнопкой мыши файл и выберите Свойства.

    2. На вкладке "Цифровые подписи" выберите указанный элемент в списке подписей.

    3. Выберите "Сведения" и выберите "Просмотреть сертификат".

    4. На вкладке "Сведения" выберите "Расширенное использование ключа".

Драйвер использует следующий процесс, когда он ушел в отставку драйвера:

  1. Добавьте внедренную сигнатуру SHA-2 Майкрософт.

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

  3. Создайте и подпишите новый файл каталога с помощью сертификата SHA-2 Майкрософт. Каталог заменяет любой существующий каталог, предоставленный клиентом.

Тестирование драйвера на Windows

Установите пример драйвера и проверьте его на Windows:

  1. Откройте окно командной строки с правами администратора.

  2. Перейдите в папку пакета драйвера и введите следующую команду.

    C:\Echo> devcon install echo.inf root\ECHO
    
  3. Убедитесь, что процесс установки драйвера не отображает следующее сообщение об ошибке: "Windows не удается проверить издателя этого программного обеспечения драйвера".

Создание заявки с несколькими драйверами

Отправьте несколько драйверов одновременно, выполнив следующие действия:

  1. Создайте подкаталог для каждого драйвера.

    Схема, демонстрирующая пример структуры каталога подписи драйверов.

  2. Подготовьте файл ввода 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