Firma di attestazione dei driver di Windows

Questo articolo descrive come firmare un driver utilizzando la firma tramite attestazione.

Annotazioni

I driver firmati di attestazione destinati ai destinatari delle vendite al dettaglio non vengono pubblicati in Windows Update. Il supporto continua per i driver con firma di attestazione quando si testano scenari con le opzioni CoDev o Test Registry Key/Surface SSRK.

Prerequisiti

  • Leggere e comprendere i requisiti per i driver firmati per attestazione per gli scenari di test.

  • Eseguire la registrazione per il Programma per sviluppatori hardware. Se non si è registrati, seguire la procedura descritta in Register per Microsoft Windows Hardware Developer Program.

  • È 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 si dispone di un certificato esistente, rendere disponibile il certificato.

    • Se l'organizzazione non ha un certificato, acquistare un certificato EV.

  • Scaricare e installare Windows Assessment and Deployment Kit (Windows ADK) seguendo il processo descritto in Download e installare Windows ADK.

  • (Facoltativo) Scaricare l'esempio di driver Echo usato in questo articolo, disponibile in GitHub.

Creare il file CAB

La procedura seguente crea un invio di file CAB usando l'esempio di driver Echo per illustrare i passaggi.

Un tipico invio di file CAB deve contenere i componenti seguenti:

  • Il driver stesso (ad esempio, Echo.sys).

  • File INF (.inf) del driver usato dalla dashboard per facilitare il processo di firma.

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

  • I file di catalogo (con estensione cat) sono obbligatori e usati solo per la verifica aziendale. Microsoft rigenera i file di catalogo e sostituisce tutti i file di catalogo inviati in precedenza.

Annotazioni

Ogni cartella del driver nel file CAB deve supportare lo stesso set di architetture. Ad esempio, devono supportare x86, x64 o devono supportare tutti 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 perché il CAB sia valido.

Per creare il file CAB, seguire questa procedura:

  1. Raccogliere i file binari da firmare in una singola directory. In questo esempio viene utilizzata la C:\Echo cartella .

  2. Aprire una finestra del prompt dei comandi con privilegi di amministratore.

  3. Immettere il MakeCab /? comando per visualizzare le opzioni 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. Preparare un file di input DDF (CAB File Device Description Framework). Per il driver Echo in questo esempio, l'input potrebbe essere simile al codice seguente:

    ;*** 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 il comando seguente per creare il file CAB:

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

    L'output del MakeCab comando deve 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

Il passaggio successivo consiste nel firmare il file CAB con il certificato EV.

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

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

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 nel Centro per i partner

Dopo aver firmato il file CAB, si è pronti per inviare il file nel Centro per i partner:

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

  2. Selezionare Invia nuovo hardware.

    Screenshot dell'elenco degli invii di hardware.

  3. Nella sezione Pacchetti e Proprietà di firma, inserisci un nome di prodotto per l'invio del tuo driver. Usa questo nome per cercare e organizzare gli invii di driver.

    Annotazioni

    Il nome è visibile quando si condivide il driver con un'altra società.

  4. Lasciare deselezionate entrambe le opzioni di firma di test (non selezionate).

  5. Per l'opzione 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. Selezionare Invia nella parte inferiore della pagina.

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

Verificare che il driver sia firmato correttamente

Verifica che il driver sia firmato in modo corretto seguendo questi passaggi:

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

  2. Aprire una finestra del prompt dei comandi con privilegi di amministratore.

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

    C:\Echo> SignTool verify Echo.Sys
    
  4. Per elencare altre informazioni 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 verificare l'utilizzo avanzato delle chiavi (EKU) del driver, completare la procedura seguente:

    1. Aprire Windows Explorer e individuare il file binario. Fare clic con il pulsante destro del mouse sul file e selezionare Proprietà.

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

    3. Selezionare Dettagli e quindi Visualizza certificato.

    4. Nella scheda Dettagli selezionare Utilizzo chiavi avanzato.

Il driver utilizza il seguente processo quando disinstalla il driver:

  1. Aggiungere una firma incorporata MICROSOFT SHA-2.

  2. Se i file binari del driver sono incorporati firmati dal cliente con i propri certificati, sovrascrivere le firme.

  3. Creare e firmare un nuovo file di catalogo con un certificato Microsoft SHA-2. Il catalogo sostituisce qualsiasi catalogo esistente fornito dal cliente.

Testare il driver in Windows

Installare il driver di esempio e testarlo in Windows:

  1. Aprire una finestra del prompt dei comandi con privilegi di amministratore.

  2. Passare alla cartella del pacchetto driver e immettere il comando seguente.

    C:\Echo> devcon install echo.inf root\ECHO
    
  3. Verificare che il processo di installazione del driver non mostri il messaggio di errore seguente: "Windows non è in grado di verificare l'autore di questo software driver".

Creare una sottomissione con più driver

Inviare più driver contemporaneamente seguendo questa procedura:

  1. Crea una sottodirectory per ogni driver.

    Diagramma che mostra un esempio di struttura della directory di firma dei driver.

  2. Preparare un file di input DDF per CAB che fa riferimento alle sottodirectory. Per questo esempio, l'input potrebbe essere simile al codice 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