Firma di attestazione driver di Windows
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 viene illustrato il processo di creazione di un invio di file CAB. Viene usato l'esempio di driver echo per illustrare il processo.
Un tipico invio di file CAB deve contenere:
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:
Raccogliere i file binari da accedere a una singola directory. In questo esempio, usiamo
C:\\Echo
.Aprire una finestra del prompt dei comandi come amministratore.
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).
Preparare un file CAB di input DDF. Per il driver Echo, potrebbe essere simile al 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
Immettere il comando seguente 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
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
Per 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 certificato SHA256/algoritmo digest/timestamp, 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 usando il Centro per i partner
Passare al dashboard hardware del Centro per i partner e accedere usando le credenziali.
Selezionare Invia nuovo hardware.
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.
Lasciare deselezionate entrambe le opzioni di firma dei test.
Per Firme richieste, selezionare le firme da includere nel pacchetto driver.
Spostarsi verso il basso nella pagina e selezionare Invia.
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.
Dopo aver scaricato il file di invio, estrarre il file del driver.
Aprire una finestra del prompt dei comandi come amministratore.
Immettere il comando seguente per verificare che il driver sia stato firmato come previsto.
C:\Echo> SignTool verify Echo.Sys
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
Per confermare le EKU del driver, seguire questa procedura.
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à.
Nella scheda Firme digitali selezionare l'elemento elencato nell'elenco Firma.
Selezionare Dettagli e quindi Visualizza certificato.
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 vengono 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
Usare le istruzioni seguenti per installare il driver di esempio.
Aprire una finestra del prompt dei comandi come amministratore. Passare alla cartella del pacchetto driver e immettere il comando seguente.
C:\Echo> devcon install echo.inf root\ECHO
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:
Creare una sottodirectory per ogni driver.
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