Comparteix a través de


Controladores de Windows firmados mediante atestación

En este artículo se describe cómo firmar un controlador mediante la firma de atestación.

Nota:

Los controladores con firma de atestación que tienen como destino el público general no se publican en Windows Update. La compatibilidad con los controladores firmados por atestación continúa cuando se prueban escenarios con las opciones CoDev o Test Registry Key / Surface SSRK.

Requisitos previos

Crear el archivo CAB

El siguiente procedimiento crea un envío de archivos CAB utilizando el ejemplo de controlador Echo para ilustrar los pasos.

Un envío de archivo CAB típico debe contener los siguientes componentes:

  • El propio controlador (por ejemplo, Echo.sys).

  • El archivo INF (.inf) del controlador usado por el panel para facilitar el proceso de firma.

  • El archivo de símbolos usado para la información de depuración, como Echo.pdb. El archivo .pdb es necesario para las herramientas automatizadas de análisis de bloqueos de Microsoft.

  • Los archivos de catálogo (.cat) son necesarios y se usan solo para la verificación de la empresa. Microsoft regenera los archivos de catálogo y reemplaza los archivos de catálogo enviados anteriormente.

Nota:

Cada carpeta de controladores del archivo CAB debe admitir el mismo conjunto de arquitecturas. Por ejemplo, deben admitir x86, x64 o todos deben admitir x86 y x64.

No utilice rutas UNC de recursos compartidos al referirse a las ubicaciones de los controladores (\server\share). Debe usar una letra de unidad asignada para que el CAB sea válido.

Para crear el archivo CAB, siga estos pasos:

  1. Recopile los archivos binarios que se van a firmar en un único directorio. En este ejemplo se usa la C:\Echo carpeta .

  2. Abra una ventana de la línea de comandos con privilegios de administrador.

  3. Escriba el MakeCab /? comando para ver las opciones del comando:

    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. Preparar un archivo de entrada para el marco de descripción del dispositivo CAB (DDF). Para el controlador Echo de este ejemplo, la entrada podría ser similar al código siguiente:

    ;*** 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. Escriba el siguiente comando para crear el archivo CAB:

    C:\Echo> MakeCab /f "C:\Echo\Echo.ddf
    

    La salida del MakeCab comando debe mostrar el número de archivos en el archivo CAB creado. En este caso, debe haber dos archivos.

    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. Busque el archivo CAB en el subdirectorio Disk1. Puede seleccionar el archivo CAB en el Explorador de archivos para comprobar que contiene los archivos esperados.

Firma el archivo CAB con tu certificado EV

El siguiente paso es firmar el archivo CAB con el certificado EV.

Use el proceso recomendado por el proveedor de certificados EV. Por ejemplo, para firmar el archivo CAB con una marca de tiempo SHA256, escriba el siguiente comando:

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"

Importante

Recuerde usar los procedimientos recomendados del sector para administrar la seguridad del proceso de firma de código EV.

Enviar el archivo CAB firmado de EV en el Centro de partners

Después de firmar el archivo CAB, estará listo para enviar el archivo en el Centro de partners:

  1. Vaya al panel de hardware del Centro de Partners e inicie sesión con sus credenciales.

  2. Seleccione Submit new hardware (Enviar nuevo hardware).

    Captura de pantalla de la lista de envíos de hardware.

  3. En la sección Paquetes y propiedades de firma, escriba un nombre de producto para el envío de controladores. Usa este nombre para buscar y organizar tus envíos de drivers.

    Nota:

    El nombre es visible cuando comparte el controlador de software con otra empresa.

  4. Deje las dos opciones de firma de prueba desactivadas (no seleccionadas).

  5. Para la opción Firmas requeridas, seleccione las firmas que se van a incluir en el paquete de controladores:

    Captura de pantalla que muestra las opciones para enviar el controlador Echo para firmar.

  6. Seleccione Enviar en la parte inferior de la página.

  7. Una vez finalizado el proceso de firma, descargue el controlador firmado desde el panel de hardware.

Valide que el controlador esté firmado correctamente

Confirme que el controlador está firmado correctamente siguiendo estos pasos:

  1. Después de descargar el archivo de envío, extraiga el archivo del controlador.

  2. Abra una ventana de la línea de comandos con privilegios de administrador.

  3. Escriba el siguiente comando para comprobar que el controlador está firmado según lo previsto:

    C:\Echo> SignTool verify Echo.Sys
    
  4. Para enumerar otra información y hacer que SignTool compruebe todas las firmas de un archivo con varias firmas, escriba el siguiente comando:

     C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
    
  5. Para confirmar los usos mejorados de clave (EKU) del controlador, complete los pasos siguientes:

    1. Abra Windows Explorer y busque el archivo binario. Haga clic con el botón derecho en el archivo y seleccione Propiedades.

    2. En la pestaña Firmas digitales , seleccione el elemento enumerado en la lista de firmas.

    3. Seleccione Detalles y, a continuación, seleccione Ver certificado.

    4. En la pestaña Detalles, seleccione Uso mejorado de claves.

El controlador usa el siguiente proceso cuando desinstala el controlador:

  1. Anexe una firma insertada Microsoft SHA-2.

  2. Si el cliente inserta los archivos binarios del controlador con sus propios certificados, sobrescriba las firmas.

  3. Cree y firme un nuevo archivo de catálogo con un certificado sha-2 Microsoft. El catálogo reemplaza cualquier catálogo existente proporcionado por el cliente.

Prueba del controlador en Windows

Instale el controlador de ejemplo y pruóbelo en Windows:

  1. Abra una ventana de la línea de comandos con privilegios de administrador.

  2. Vaya a la carpeta del paquete de controladores y escriba el siguiente comando.

    C:\Echo> devcon install echo.inf root\ECHO
    
  3. Confirme que el proceso de instalación del controlador no muestra el siguiente mensaje de error: "Windows no puede comprobar el publicador de este software de controlador".

Crear una presentación con varios controladores

Envíe múltiples dispositivos de controladores simultáneamente siguiendo estos pasos:

  1. Cree un subdirectorio para cada controlador.

    Diagrama que muestra una estructura de directorios de firma de controladores de ejemplo.

  2. Prepare un archivo de entrada DDF de archivo CAB que haga referencia a los subdirectorios. En este ejemplo, la entrada podría ser similar al código siguiente:

    ;*** 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