Firma di attestazione con driver Windows 10+

Questo articolo descrive come firmare un driver usando la firma dell'attestazione. Per informazioni dettagliate e requisiti per la firma dell'attestazione, vedere Driver firmati per l'attestazione di Windows 10.

Importante

A partire dal 1° marzo 2023, i driver firmati di attestazione destinati ai destinatari delle vendite al dettaglio non vengono più pubblicati in Windows Update. I driver firmati di attestazione per gli scenari di test sono ancora supportati quando si selezionano le opzioni CoDev o Chiave del Registro di sistema di test/Surface SSRK .

Prerequisiti

  • Leggere e comprendere i requisiti per i driver firmati per l'attestazione di Windows 10.

  • Registrarsi per il programma Hardware Developer. Se non si è ancora registrati, seguire la procedura descritta in Come registrarsi per il Programma per sviluppatori hardware Microsoft Windows.

  • È necessario disporre di un certificato di firma del codice di convalida estesa (EV). Controllare se l'organizzazione ha già un certificato di firma del codice. Se l'azienda dispone già di un certificato, disporre del certificato disponibile. Se l'organizzazione non ha un certificato, è necessario acquistare un certificato EV.

  • Seguire il processo descritto in Scaricare kit e strumenti per Windows 10 per scaricare e installare Windows Driver Kit (WDK).

  • (Facoltativo) Scaricare l'esempio di driver echo usato in questo articolo.

Creare il file CAB

In questa sezione verrà illustrato il processo di creazione di un invio di file CAB. Verrà usato l'esempio di driver echo per illustrare il processo.

Un tipico invio di file CAB deve contenere quanto segue:

  • Il driver stesso, ad esempio Echo.sys

  • File INF del driver usato dal dashboard per facilitare il processo di firma.

  • File di simboli utilizzato per il debug delle informazioni. Ad esempio, Echo.pdb. Il file con estensione pdb è necessario per gli strumenti di analisi automatica degli arresti anomali di Microsoft.

  • I file CAT del catalogo sono obbligatori e usati solo per la verifica aziendale. Microsoft rigenera i file di catalogo e sostituisce tutti i file di catalogo inviati.

Nota

Ogni cartella del driver nel file CAB deve supportare lo stesso set di architetture. Ad esempio, devono supportare x86, x64 o tutti devono supportare sia x86 che x64.

Non usare percorsi di condivisione file UNC quando si fa riferimento ai percorsi dei driver (\\\server\share). È necessario utilizzare una lettera di unità mappata affinché il CAB sia valido.

Per creare il file CAB:

  1. Raccogliere i file binari da accedere a una singola directory. In questo esempio si userà C:\\Echo.

  2. Aprire una finestra del prompt dei comandi come Amministrazione istrator.

  3. Immettere MakeCab /? per visualizzare le opzioni 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. Preparare un file CAB di input DDF. Per il nostro driver Echo potrebbe sembrare simile a questo.

    ;*** 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. Immettere quanto segue per creare il file CAB.

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

    L'output di MakeCab dovrebbe visualizzare il numero di file nel file CAB creato. In questo caso, dovrebbero essere presenti due file.

    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. Individuare il file CAB nella Disk1 sottodirectory. È possibile selezionare il file CAB in Esplora file per verificare che contenga i file previsti.

Firmare il file CAB con il certificato EV

  1. Usare il processo consigliato dal provider di certificati EV per firmare il file CAB con il certificato EV. Ad esempio, per firmare il file CAB con un certificato SHA256/algoritmo digest/timestamp, immettere il comando seguente:

    C:\Echo> SignTool sign /ac "C:\MyEVCert.cer" /s MY /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "C:\Echo\Disk1\Echo.cab"
    

    Importante

    Ricordarsi di usare le procedure consigliate del settore per gestire la sicurezza del processo di firma del codice EV.

Inviare il file CAB firmato EV usando il Centro per i partner

  1. Passare al dashboard hardware del Centro per i partner e accedere usando le credenziali.

  2. Selezionare Invia nuovo hardware.

    Screenshot dell'elenco dell'hardware inviato.

  3. Nella sezione Pacchetti e proprietà di firma immettere un nome di prodotto per l'invio del driver. Questo nome può essere usato per cercare e organizzare gli invii di driver.

    Nota

    Se si condivide il driver con un'altra società, verrà visualizzato questo nome.

  4. Lasciare deselezionate entrambe le opzioni di firma dei test.

  5. Per Firme richieste, selezionare le firme da includere nel pacchetto driver.

    Screenshot che mostra le opzioni per l'invio del driver echo per la firma.

  6. Spostarsi verso il basso nella pagina e selezionare Invia.

  7. Al termine del processo di firma, scaricare il driver firmato dal dashboard hardware.

Verificare che il driver sia stato firmato correttamente

Completare i passaggi seguenti per assicurarsi che il driver sia stato firmato correttamente.

  1. Dopo aver scaricato il file di invio, estrarre il file del driver.

  2. Aprire una finestra del prompt dei comandi come Amministrazione istrator.

  3. Immettere il comando seguente per verificare che il driver sia stato firmato come previsto.

    C:\Echo> SignTool verify Echo.Sys
    
  4. Per elencare informazioni aggiuntive e fare in modo che signtool verifichi tutte le firme in un file con più firme, immettere il comando seguente:

     C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
    
  5. Per confermare le EKU del driver, seguire questa procedura.

    1. Aprire Esplora risorse e individuare il file binario. Selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) sul file e scegliere Proprietà.

    2. Nella scheda Firme digitali selezionare l'elemento elencato nell'elenco Firma.

    3. Selezionare Dettagli e quindi Visualizza certificato.

    4. Nella scheda Dettagli selezionare Utilizzo chiavi avanzato.

Quando il driver viene riassegnato dal dashboard, viene usato il processo seguente.

  • Aggiunge una firma incorporata di Microsoft SHA2.
  • Se i file binari del driver sono incorporati firmati dal cliente con i propri certificati, tali firme non verranno sovrascritte.
  • Crea e firma un nuovo file di catalogo con un certificato Microsoft SHA2. Questo catalogo sostituisce qualsiasi catalogo esistente fornito dal cliente.

Testare il driver in Windows 10

Usare le istruzioni seguenti per installare il driver di esempio.

  1. Aprire una finestra del prompt dei comandi come Amministrazione istrator. Passare alla cartella del pacchetto driver e immettere il comando seguente.

    C:\Echo> devcon install echo.inf root\ECHO
    
  2. Verificare che il processo di installazione del driver non visualizzi il messaggio "Windows non è in grado di verificare l'autore di questo software driver". Finestra di dialogo Sicurezza di Windows.

Creare un invio con più driver

Per inviare più driver contemporaneamente:

  1. Creare una sottodirectory per ogni driver, come illustrato di seguito.

    Diagramma che mostra una struttura di directory di firma del driver di esempio.

  2. Preparare un file CAB DDF di input che fa riferimento alle sottodirectory. che sarà simile al seguente:

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