Firma di un driver per la versione pubblica

Prima di rilasciare un pacchetto driver al pubblico, è consigliabile inviare il pacchetto per la certificazione. Per altre informazioni, vedere Certificazione hardware Windows e [Servizi dashboard hardware](.. /dashboard/index.md. Per inviare un pacchetto driver per la certificazione, è necessario firmare il pacchetto con un certificato ottenuto da un'autorità di certificazione attendibile come VeriSign. Per altre informazioni, vedere Ottenere un certificato VeriSign. Sarà necessario anche un certificato incrociato, fornito da Microsoft.

Si supponga di aver ottenuto una coppia di file da Verisign: un file di chiave privata (PVK) e un certificato di pubblicazione software (SPC). Si supponga inoltre di avere una soluzione di Microsoft Visual Studio che contiene un progetto driver denominato MyDriver e un progetto di pacchetto driver denominato MyDriver Package. Per firmare il pacchetto driver, seguire questa procedura.

  1. Usare lo strumento Pvk2Pfx per creare un certificato PFX (Personal Information Exchange). Lo strumento Pvk2Pfx accetta i file PVK e SPC come input e crea un singolo file PFX. Per questo esercizio, si supponga che il file PFX sia denominato MyCert.pfx.

    Nota Dopo aver creato il file PFX, è possibile riutilizzarlo per altri progetti driver e in altri computer di sviluppo driver.

  2. Per determinare quale certificato incrociato è necessario, vedere Cross-Certificates for Kernel Mode Code Signing (Certificati incrociati per la firma del codice in modalità kernel). Verificare che il certificato incrociato richiesto sia in $(BASEDIR)\CrossCertificates, dove $(BASEDIR) è la directory di base dei kit di Windows (ad esempio c:\Programmi (x86)\Windows Kits\8.0\CrossCertificates. Se il certificato incrociato richiesto non è presente, scaricare il certificato incrociato da Microsoft e copiarlo in $(BASEDIR)\CrossCertificates.

  3. In Visual Studio aprire la soluzione che contiene i progetti MyDriver e MyDriver Package. Se la finestra di Esplora soluzioni non è già aperta, scegliere Esplora soluzioni dal menu Visualizza. Nella finestra Esplora soluzioni selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) sul progetto del pacchetto, il pacchetto MyDriver e scegliere Proprietà.

  4. Nelle pagine delle proprietà per il pacchetto passare a Proprietà > di configurazione Driver Signing > General( Generale). Nell'elenco a discesa Modalità di accesso selezionare Firma di produzione. Per il certificato di produzione, eseguire una delle operazioni seguenti:

    • Immettere il percorso del certificato di firma, ad esempio c:\Certs\MyCert.pfx.

    • Scegliere Seleziona da file e passare al certificato di firma.

    • Scegliere Seleziona dall'archivio e scegliere un certificato importato in precedenza in un archivio certificati.

      Nota Per importare un certificato in un archivio, selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) sul file di certificato (file PFX) e scegliere Installa PFX. Seguire le istruzioni in Importazione guidata certificati.

      Nota Se si decide di usare un certificato diverso in un secondo momento, assicurarsi che il nuovo certificato venga importato nell'archivio certificati. Se si sceglie Seleziona da file e si passa al nuovo certificato, il nuovo certificato verrà importato automaticamente nell'archivio certificati. Tuttavia, se si immette manualmente il percorso del nuovo certificato, non verrà importato automaticamente nell'archivio certificati. In tal caso, è necessario selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) sul nuovo file di certificato e scegliere Installa PFX.

  5. Nella pagina delle proprietà Generale firma > driver, per TimeStampServer, selezionare uno dei server timestamp nell'elenco a discesa.

    Nota L'uso di uno dei server timestamp nell'elenco a discesa richiede la connessione a Internet quando si compila il pacchetto driver. Se è necessario disconnettersi da Internet quando si compila il pacchetto driver, deselezionare il campo TimeStampServer .

  6. Nelle pagine delle proprietà del pacchetto passare a Proprietà > di configurazione Inf2Cat > Generale. Nell'elenco a discesa Esegui Inf2Cat selezionare .

  7. Chiudere le pagine delle proprietà per il pacchetto.

  8. Selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) sul progetto driver, MyDriver e scegliere Proprietà

  9. Nelle pagine delle proprietà per il driver passare a Proprietà > di configurazione Driver Signing > General( Generale). Impostare TimeStampServer sullo stesso valore usato nelle proprietà del pacchetto driver. Impostare Sign Mode (Modalità di firma) su Production Sign (Firma di produzione) e impostare Production Certificate (Certificato di produzione) sullo stesso valore usato nelle proprietà del pacchetto driver.

  10. Quando si è pronti per compilare il pacchetto driver, premere F5. Visual Studio firmerà automaticamente il pacchetto e il file del driver. Se è stata configurata la distribuzione, Visual Studio distribuirà anche il pacchetto driver firmato in un computer di test. Per altre informazioni, vedere Effettuare il provisioning di un computer per la distribuzione e il test dei driver (WDK 8.1).

Visualizzazione dei file del pacchetto driver

Dopo aver compilato la soluzione, passare Esplora file alla cartella contenente il pacchetto driver. Uno dei file nel pacchetto è un file di catalogo. Il file di catalogo contiene la firma digitale per il pacchetto. Per un esempio di visualizzazione dei file in un pacchetto firmato, vedere Scrittura di un driver KMDF basato su un modello.

Ottenere una firma di versione WHQL

Quando il pacchetto driver supera i test di certificazione, può essere firmato da Windows Hardware Quality Labs (WHQL). Se il pacchetto driver è firmato da WHQL, può essere distribuito tramite il programma Windows Update o altri meccanismi di distribuzione supportati da Microsoft.

Per eseguire l'installazione in Windows 10, 8.1, 8 e 7, il pacchetto driver può avere una singola firma SHA1.

A partire da Windows 10, devi anche inviare qualsiasi nuovo driver in modalità kernel di Windows 10 per la firma digitale nel portale del dashboard di Windows Hardware Developer Center. Gli invii di driver in modalità kernel e utente devono avere un certificato di firma del codice valido (EV).

** Nota ** La deprecazione SHA1 non si applica ai driver.

Firma di un pacchetto rispetto alla firma di un singolo file di driver

Un pacchetto driver contiene diversi file. In genere un pacchetto driver include uno o più file driver, un file di informazioni (file INF) e un file di catalogo. Il file di catalogo contiene informazioni sugli altri file nel pacchetto. Quando si firma il file di catalogo, la firma nel file di catalogo funge da firma per l'intero pacchetto driver. In altre parole, la firma del file di catalogo equivale alla firma del pacchetto driver.

Nella maggior parte dei casi, è sufficiente firmare il pacchetto driver e non è necessario firmare singoli file di driver. In alcuni casi, tuttavia, è necessario firmare sia il pacchetto che i singoli file del driver. Ad esempio, i file del driver boot-start devono essere firmati singolarmente. La firma di un singolo file driver viene definita incorporamento di una firma nel file del driver.

Si supponga di avere una soluzione di Visual Studio che contiene un progetto driver denominato MyDriver e un progetto di pacchetto driver denominato MyDriver Package. Visual Studio offre due set di pagine delle proprietà: una per My Driver e una per My Driver Package. Per firmare il pacchetto driver, impostare le proprietà firma driver di My Driver Package. Per incorporare una firma nel singolo file del driver, impostare le proprietà firma driver di My Driver.

Quando si impostano le proprietà del pacchetto driver per la firma di produzione, ricordarsi di modificare di conseguenza le proprietà di firma dei singoli file driver. Disattivare la firma per i singoli file del driver o impostare i singoli file del driver per usare lo stesso certificato specificato per il pacchetto.

Nota Per visualizzare l'hash (detto anche stampa personale) di un certificato, aprire una finestra del prompt dei comandi e passare alla directory che contiene il certificato. Immettere il comando certutil -dump CertName.pfx, dove CertName.pfx è il nome del certificato.