Поделиться через


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

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

Внимание

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

Необходимые компоненты

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

В этом разделе описан процесс создания отправки CAB-файлов. Мы используем пример эхо-драйвера для иллюстрации процесса.

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

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

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

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

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

Примечание.

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

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

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

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

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

  3. Введите 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).
    
  4. Подготовка входного файла 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
    
  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

  1. Чтобы подписать 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 с помощью Центра партнеров

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

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

    Снимок экрана: список отправленного оборудования.

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

    Примечание.

    Если вы поделитесь своим драйвером с другой компанией, они увидят это имя.

  4. Оставьте оба параметра проверки подписывания без флажка.

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

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

  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. На вкладке "Сведения" выберите "Расширенное использование ключа".

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

  • Добавляет внедренную подпись Microsoft SHA2.
  • Если двоичные файлы драйвера внедрены клиентом с собственными сертификатами, эти подписи не перезаписываются.
  • Создает и подписывает новый файл каталога с помощью сертификата Microsoft SHA2. Этот каталог заменяет любой существующий каталог, предоставленный клиентом.

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

Используйте следующие инструкции для установки примера драйвера.

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

    C:\Echo> devcon install echo.inf root\ECHO
    
  2. Убедитесь, что процесс установки драйвера не отображает сообщение "Windows не может проверить издателя этого программного обеспечения драйвера". Диалоговое окно "Безопасность 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