SignTool
SignTool (Signtool.exe) è uno strumento CryptoAPI da riga di comando che firma digitalmente i file, verifica le firme nei file e i file timestamp.
SignTool [Operation] [Options] [FileName ...]
Elenco parziale di operazioni, opzioni e argomenti
Operazioni
catdb
Configura SignTool per aggiornare un database di catalogo. SignTool aggiunge file di catalogo a un database o rimuove i cataloghi da un database. Per impostazione predefinita, il comando catdb aggiunge i file, i cui nomi sono specificati dall'argomento FileName , al database del componente di sistema (driver).
Nota
I database di catalogo vengono usati per la ricerca automatica dei file di catalogo.
sign
Configura SignTool per firmare digitalmente i file i cui nomi sono specificati dall'argomento FileName .
timestamp
Configura SignTool per impostare come timestamp i file i cui nomi sono specificati dall'argomento FileName .
verify
Configura SignTool per verificare la firma digitale dei file i cui nomi sono specificati dall'argomento FileName .
Opzioni dell'operazione Catdb
/d
Configura SignTool per aggiornare il database del catalogo. Se non viene usata né l'opzione /d né /g , SignTool aggiorna il componente di sistema e il database del driver.
/g Guid
Configura SignTool per aggiornare il database del catalogo identificato dall'argomento GUID .
/r
Configura SignTool per rimuovere ogni file di catalogo, i cui nomi sono specificati dall'argomento FileName , dal database di catalogo. Se questa opzione non è specificata, SignTool aggiunge i file di catalogo specificati al database di catalogo.
/u
Configura SignTool per generare un nome univoco, se necessario, per impedire un conflitto con un file di catalogo esistente nel database di catalogo. Se questa opzione non è specificata, SignTool sovrascrive qualsiasi catalogo esistente con lo stesso nome del catalogo da aggiungere.
Opzioni dell'operazione di firma
/a Configura SignTool per selezionare automaticamente il certificato di firma migliore. Se questa opzione non è presente, SignTool prevede di trovare un solo certificato di firma.
/ac CrossCertFileName
Specifica il nome di un file di certificato incrociato usato con un certificato SPC (Software Publisher Certificate) denominato CertificateName e installato nell'archivio certificati StoreName. Questa opzione deve essere usata solo se il certificato di firma è un SPC.
/c CertTemplateName
Specifica un'estensione Microsoft, Certificate Template Name, per il certificato di firma.
/csp CSPName
Specifica il provider del servizio di crittografia (CSP) che contiene il contenitore di chiavi private.
/d Desc
Specifica una descrizione del contenuto firmato.
/du URL
Specifica un URL per la descrizione espansa del contenuto firmato.
/f SignCertFile
Specifica il certificato di firma in un file. È supportato solo il formato di file PFX (Personal Information Exchange). È possibile usare lo strumento Pvk2Pfx per convertire i file SPC e PVK in formato PFX.
Se il file è in formato PFX protetto da una password, usare l'opzione /p per specificare la password. Se il file non contiene chiavi private, usare rispettivamente le opzioni /csp e /k per specificare il nome del contenitore di chiavi private e CSP.
/Fd
Specifica l'algoritmo digest file da usare per creare le firme del file. Il valore predefinito è SHA1.
/i IssuerName
Specifica il nome dell'emittente del certificato di firma. Questo valore può essere una sottostringa dell'intero nome dell'emittente.
/j DLL
Specifica il nome di una DLL che fornisce gli attributi della firma.
/jp ParameterName
Specifica un parametro passato alla DLL specificata dal comando /j .
/kc PrivKeyContainerName
Specifica il nome del contenitore di chiavi della chiave privata.
/n SubjectName
Specifica il nome del soggetto del certificato di firma. Questo valore può essere una sottostringa dell'intero nome del soggetto.
/nph
Se supportato, sopprime gli hash delle pagine per i file eseguibili. Il valore predefinito è determinato dalla variabile di ambiente SIGNTOOL_PAGE_HASHES e dalla versione di wintrust.dll. Questa opzione viene ignorata per i file non PE.
/p Password
Specifica la password da usare all'apertura di un file PFX È possibile specificare un file PFX usando l'opzione /f
Percorso /p7
Specifica di produrre un file PKCS (Public Key Cryptography Standards) #7 per ogni file di contenuto specificato. I file PKCS #7 sono denominati path\filename.p7.
Valore /p7ce
Specifica le opzioni per il contenuto PKCS #7 firmato. Impostare Valore su "Embedded" per incorporare il contenuto firmato nel file PKCS #7 o su "DetachedSignedData" per generare la parte di dati firmati di un file PKCS #7 scollegato. Se l'opzione /p7ce non viene usata, il contenuto firmato viene incorporato per impostazione predefinita.
OID /p7co
Specifica l'identificatore di oggetto (OID) tramite cui viene identificato il contenuto PKCS #7 firmato.
/ph Se supportato, genera hash di pagina per i file eseguibili.
/r RootSubjectName
Specifica il nome del soggetto del certificato radice a cui deve essere concatenato il certificato di firma. Questo valore può essere una sottostringa dell'intero nome del soggetto del certificato radice.
/s StoreName
Specifica il nome dell'archivio certificati da aprire durante la ricerca del certificato da usare per la firma dei file. Se questa opzione non è specificata, viene aperto l'archivio certificati personale.
/sha1 Hash
Specifica l'hash SHA1 del certificato di firma.
/Sm
Configura SignTool per l'uso di un archivio certificati del computer anziché di un archivio certificati utente.
/t URL
Specifica un URL di un server timestamp. Se questa opzione non viene specificata, il file firmato non viene timestampato. Un file di catalogo o un file del driver deve essere timestamped, perché se la chiave del firmatario è compromessa, il timestamp fornisce le informazioni necessarie per revocare la chiave usata per firmare il file.
/td alg
Usato con l'opzione /tr per richiedere un algoritmo digest usato dal server timestamp RFC 3161.
/tr URL
Specifica l'URL del server di timestamp RFC 3161. Se questa opzione (o /t) non è presente, il file firmato non verrà contrassegnato come timestamp. Se l'aggiunta del timestamp non riesce, viene generato un avviso. Questa opzione non può essere usata con l'opzione /t .
Utilizzo /u
Specifica l'utilizzo chiavi avanzato (EKU) che deve essere presente nel certificato di firma. Il valore di utilizzo può essere specificato tramite OID o stringa. L'utilizzo predefinito è "Firma codice" (1.3.6.1.5.5.7.3.3).
/uw Specifica l'utilizzo della "Verifica dei componenti di sistema Windows" (1.3.6.1.4.1.311.10.3.6).
Opzioni dell'operazione timestamp
/p7 Timestamp file PKCS #7.
/t URL
Specifica l'URL del server timestamp. Il file con timestamp deve essere stato firmato in precedenza
/td alg
Richiede un algoritmo digest usato dal server di timestamp RFC 3161. /td viene usato con l'opzione /tr .
/tp index
Aggiunge un timestamp alla firma in corrispondenza di indice.
/tr alg
Richiede un algoritmo digest usato dal server di timestamp RFC 3161. /td viene usato con l'opzione /tr .
Verificare le opzioni dell'operazione
/a
Specifica che tutti i metodi possono essere usati per verificare il file. Innanzitutto, viene effettuata una ricerca nei database dei cataloghi per determinare se il file è firmato in un catalogo. Se il file non è connesso in alcun catalogo, SignTool tenta di verificare la firma incorporata del file. Questa opzione è consigliata per la verifica di file che possono risultare firmati o non firmati all'interno di un catalogo.
/annuncio
Specifica che viene eseguita la ricerca solo del database di catalogo predefinito per il catalogo in cui è stato eseguito l'accesso al file.
/all
Verifica tutte le firme in un file che include più firme.
/come
Specifica che viene eseguita solo la ricerca del catalogo del componente di sistema (driver) per il catalogo in cui è stato eseguito l'accesso al file.
/ag CatDBGUID
Specifica che solo il database di catalogo, identificato tramite l'argomento CatDBGUID, viene cercato il catalogo in cui è stato eseguito l'accesso al file.
/c CatalogFileName
Specifica il nome di un file di catalogo.
/d Specifica che lo strumento firma deve stampare la descrizione e l'URL della descrizione.
/ds index
Verifica la firma in una posizione specificata.
/hash {SHA1|SHA256}
Specifica un algoritmo hash facoltativo da usare quando si cerca un file in un catalogo.
/Kp
Configura SignTool per verificare che la firma digitale di ogni file specificato dall'argomento FileName sia conforme ai criteri di firma del codice in modalità kernel e ai requisiti di firma dell'installazione del dispositivo PnP di Windows Vista e versioni successive di Windows. Se questa opzione non è specificata, SignTool verifica solo che una firma sia conforme ai requisiti di firma dell'installazione del dispositivo PnP.
/ms
Usa semantica di verifica multipla. Si tratta del comportamento predefinito di una chiamata di funzione WinVerifyTrust in Windows 8 e versioni successive.
/o Versione
Verifica il file in base alla versione del sistema operativo. Il formato per l'argomento Version è PlatformID:VerMajor.VerMinor.BuildNumber
È consigliabile usare l'opzione /o . Se /o non è specificato, SignTool potrebbe restituire risultati imprevisti. Ad esempio, se non si include l'opzione /o , i cataloghi di sistema che convalidano correttamente in un sistema operativo meno recente potrebbero non essere convalidati correttamente in un sistema operativo più recente.
/p7
Verifica i file PKCS #7. Non viene usato alcun criterio esistente per la convalida PKCS #7. La firma viene controllata e viene creata una catena per il certificato di firma.
/babbo
Configura SignTool per verificare che la firma digitale di ogni file specificato dall'argomento FileName sia conforme ai requisiti di firma dell'installazione del dispositivo PnP.
Nota
Questa opzione non può essere usata con le opzioni catdb .
/pg PolicyGUID
Specifica i criteri di verifica in base al GUID. GUIDCriteri corrisponde all'IDAzione dei criteri di verifica.
Nota
Questa opzione non può essere usata con le opzioni catdb .
/ph Specifica che lo strumento firma deve stampare e verificare i valori hash della pagina.
/r RootSubjectName
Specifica il nome del soggetto del certificato radice a cui deve essere concatenato il certificato di firma. Questo valore può essere una sottostringa dell'intero nome del soggetto del certificato radice.
/Tw
Specifica che viene generato un avviso se la firma non è timestamp.
Opzioni generali
/q
Configura SignTool in modo che non visualizzi alcun output durante l'esecuzione corretta e un output minimo per l'esecuzione non riuscita.
/v
Configura SignTool per visualizzare la versione dettagliata dell'operazione e i messaggi di avviso.
/?
Configura SignTool per visualizzare le informazioni della Guida in una finestra di comando.
Filename...
Specifica un elenco di uno o più nomi di file. A seconda del comando, SignTool firmerà, timestamp o verificherà i file specificati. Se viene usato il comando catdb , SignTool aggiunge o rimuove i file specificati da un database di catalogo.
Per i comandi sign, timestamp e verify , un file può essere un file di catalogo per un pacchetto driver o un file driver.
Per il comando catdb , un file deve essere un file di catalogo per un pacchetto driver.
Osservazioni:
SignTool supporta un numero elevato di opzioni. Le opzioni descritte in questo argomento sono limitate a quelle che è possibile usare per firmare o verificare un pacchetto driver o un file driver.
Per un elenco completo dei parametri SignTool, vedere il sito Web Microsoft SignTool .
Per altre informazioni sulla firma dei file, vedere il sito Web Microsoft Cryptography Tools .
Una versione a 32 bit di SignTool si trova nella cartella bin\i386 di WDK. Una versione a 64 bit dello strumento si trova nelle cartelle bin\amd64 e bin\ia64 di WDK.
Esempi
Di seguito è riportato un esempio di come firmare il file di catalogo di un pacchetto driver usando un certificato SPC (Software Publisher Certificate) e un certificato incrociato corrispondente. Questo esempio è valido per firmare un pacchetto driver per le versioni a 64 bit di Windows Vista e versioni successive di Windows, che applicano i criteri di firma del codice in modalità kernel. L'esempio firma il file di catalogo del pacchetto driver AbcCatFileName.cat. Per firmare il file di catalogo, l'esempio usa il certificato incrociato AbcCrossCertificate e il certificato AbcSPCCertificate. Il certificato AbcSPCCertificate si trova nell'archivio certificati AbcCertificateStore.
L'esempio usa anche un server timestamp disponibile pubblicamente per firmare il file di catalogo. Il server timestamp viene fornito da DigiCert e il relativo URL è http://timestamp.digicert.com
. Per altre informazioni, vedere RFC3161 server TSA (TimeStamp Authority) conforme.
SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcCatFileName.cat
Di seguito è riportato un esempio di come incorporare una firma in un file del driver usando un SPC e un certificato incrociato. Tutti i parametri sono uguali a quelli dell'esempio che firmano un file di catalogo, ad eccezione del fatto che il file firmato è AbcDriverFile.sys anziché il file di catalogo AbcCatFileName.cat.
SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcDriverFile.sys
Di seguito è riportato un esempio di come firmare il file di catalogo di un pacchetto driver usando un certificato di versione commerciale o un certificato di test commerciale. Questo esempio è valido per firmare un pacchetto driver per le versioni a 32 bit di Windows Vista e versioni successive di Windows, che non applicano i criteri di firma del codice in modalità kernel. L'esempio firma il file di catalogo del pacchetto driver CatalogFileName.cat. Nell'esempio viene usato il certificato di test AbcTestCertificate, che si trova nell'archivio certificati TestCertificateStore, per firmare il file di catalogo.
L'esempio usa anche un server timestamp disponibile pubblicamente per firmare il file di catalogo. Il server timestamp viene fornito da DigiCert e il relativo URL è http://timestamp.digicert.com
.
SignTool sign /s TestCertificateStore /n AbcTestCertificate /t http://timestamp.digicert.com CatalogFileName.cat
Verifica di esempi
Di seguito è riportato un esempio di come verificare che la firma del file di catalogo di un pacchetto driver sia conforme ai criteri di firma del codice in modalità kernel e ai requisiti di firma dell'installazione del dispositivo PnP. Nell'esempio viene verificata la firma del file di catalogo AbcCatalogFile.cat.
SignTool verify /kp CatalogFileName.cat
Di seguito è riportato un esempio di come verificare che la firma di un file elencato nel file di catalogo di un pacchetto driver sia conforme ai criteri di firma del codice in modalità kernel e ai requisiti di firma dell'installazione del dispositivo PnP. Nell'esempio viene verificata la firma del file AbcDriverPackage.inf, che deve avere una voce di identificazione personale nel file di catalogo CatalogFileName.cat.
SignTool verify /kp /c CatalogFileName.cat AbcDriverPackage.inf
Di seguito è riportato un esempio di come verificare che una firma incorporata sia conforme ai criteri di firma del codice in modalità kernel in Windows Vista e versioni successive di Windows. Nell'esempio viene verificata la firma incorporata nel file del driver AbcDriverFile.sys.
SignTool verify /kp AbcDriverFile.sys
Di seguito è riportato un esempio di come verificare che la firma del file di catalogo di un pacchetto driver sia conforme ai requisiti di firma dell'installazione del dispositivo PnP. Nell'esempio viene verificata la firma del file di catalogo CatalogFileName.cat.
SignTool verify /pa CatalogFileName.cat
Esempio di aggiunta di un file di catalogo al database del componente di sistema (driver)
Di seguito è riportato un esempio di come usare SignTool per aggiungere il file di catalogo CatalogFileName.cat al database del componente di sistema (driver). L'opzione /v configura SignTool in modo che funzioni in modalità dettagliata e l'opzione /u configura SignTool per generare un nome univoco per il file di catalogo da aggiungere, se necessario, per impedire la sostituzione di un file di catalogo già esistente con lo stesso nome di CatalogFileName.cat.
SignTool catdb /v /u CatalogFileName.cat