Condividi tramite


SignTool

SignTool (Signtool.exe) è uno strumento CryptoAPI da riga di comando che firma i file digitalmente, verifica le firme nei file e i file timestamp.

    SignTool [Operation] [Options] [FileName ...]

Elenco parziale di operazioni, opzioni e argomenti

Gestione operativa

catdb
Configura SignTool per aggiornare un database del 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 del 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 timestampare 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 di operazione Catdb

/d
Configura SignTool per aggiornare il database del catalogo. Se non viene usata né /d/g , SignTool aggiorna il componente di sistema e il database del driver.

/gGuid
Configura SignTool per aggiornare il database del catalogo identificato dall'argomento GUID .

/R
Configura SignTool per rimuovere ognuno dei file di catalogo, i cui nomi sono specificati dall'argomento FileName , dal database del catalogo. Se questa opzione non è specificata, SignTool aggiunge i file di catalogo specificati al database del catalogo.

/U
Configura SignTool per generare un nome univoco, se necessario, per un file di catalogo per impedire un conflitto con un file di catalogo esistente nel database del catalogo. Se questa opzione non è specificata, SignTool sovrascrive qualsiasi catalogo esistente con lo stesso nome del catalogo aggiunto.

Opzioni di operazione di firma

/Un Configura SignTool per selezionare automaticamente il certificato di firma migliore. Se questa opzione non è presente, SignTool prevede di trovare un solo certificato di firma.

/acCrossCertFileName
Specifica il nome di un file di certificato incrociato usato con un certificato SPC (Software Publisher CertificateName) denominato CertificateName ed è installato nell'archivio certificati StoreName. Questa opzione deve essere usata solo se il certificato di firma è un SPC.

/cCertTemplateName
Specifica un'estensione Microsoft, Certificate Template Name, per il certificato di firma.

/cspCSPName
Specifica il provider del servizio di crittografia (CSP) che contiene il contenitore di chiavi private.

/dDesc
Specifica una descrizione del contenuto firmato.

/duURL
Specifica un URL per la descrizione espansa del contenuto firmato.

/fSignCertFile
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 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 CSP e della chiave privata.

/Fd
Specifica l'algoritmo digest file da usare per creare le firme del file. Il valore predefinito è SHA1.

/iIssuerName
Specifica il nome dell'emittente del certificato di firma. Questo valore può essere una sottostringa dell'intero nome dell'emittente.

/jDLL
Specifica il nome di una DLL che fornisce attributi della firma.

/jpParameterName
Specifica un parametro passato alla DLL specificata dal comando /j .

/kcPrivKeyContainerName
Specifica il nome del contenitore chiave della chiave privata.

/nSubjectName
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.

/pPassword
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 percorso\nomefile.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.

/p7coOID
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.

/rRootSubjectName
Specifica il nome 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.

/sStoreName
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 aperta l'archivio certificati personale.

/sha1Hash
Specifica l'hash SHA1 del certificato di firma.

/Sm
Configura SignTool per usare un archivio certificati del computer anziché un archivio certificati utente.

/tURL
Specifica un URL per un server timestamp. Se questa opzione non viene specificata, il file firmato non viene timestampato. Un file di catalogo o un file driver deve essere timestampato, perché se la chiave del firmatario è compromessa, il timestamp fornisce le informazioni necessarie per revocare la chiave usata per firmare il file.

/tdalg
Usato con l'opzione /tr per richiedere un algoritmo digest usato dal server timestamp RFC 3161.

/trURL
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 .

/uUtilizzo
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 di "Verifica del componente di sistema Windows" (1.3.6.1.4.1.311.10.3.6).

Opzioni dell'operazione timestamp

/p7 Timestamp dei file PKCS #7.

/tURL
Specifica l'URL del server timestamp. Il file con timestamp deve essere stato firmato in precedenza

/tdalg
Richiede un algoritmo digest usato dal server di timestamp RFC 3161. /td viene usato con l'opzione /tr .

/tpindex
Aggiunge un timestamp alla firma in corrispondenza di indice.

/tralg
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 solo la ricerca del database di catalogo predefinito per il catalogo in cui è stato eseguito l'accesso al file.

/Tutti
Verifica tutte le firme in un file che include più firme.

/Come
Specifica che solo il database del catalogo dei componenti di sistema (driver) viene cercato nel catalogo in cui è stato eseguito l'accesso al file.

/agCatDBGUID
Specifica che solo il database di catalogo, identificato tramite l'argomento CatDBGUID , viene cercato il catalogo in cui è stato eseguito l'accesso al file.

/cCatalogFileName
Specifica il nome di un file di catalogo.

/D Specifica che lo strumento firma deve stampare la descrizione e l'URL della descrizione.

/dsindex
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.

/Signora
Usa semantica di verifica multipla. Si tratta del comportamento predefinito di una chiamata di funzione WinVerifyTrust in Windows 8 e versioni successive.

/oVersione
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 vengono convalidati correttamente in un sistema operativo precedente 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.

/Pa
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 .

/pgPolicyGUID
Specifica i criteri di verifica in base al GUID. CriteriGUID 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.

/rRootSubjectName
Specifica il nome 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 è timestampata.

Opzioni generali

/q
Configura SignTool per visualizzare nessun output in caso di esecuzione riuscita e 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 di firma, timestamp e verifica , 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.

Commenti

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 di 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.

Esempio

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, nell'esempio vengono usati 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.

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 driver usando un SPC e un certificato incrociato. Tutti i parametri sono uguali all'esempio che firma 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 la firma di 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, disponibile 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 del pacchetto driver sia conforme ai criteri di firma del codice in modalità kernel e ai requisiti di firma del dispositivo PnP. Nell'esempio viene verificata la firma del file AbcDriverPackage.inf, che deve avere una voce di identificazione personale nel file del 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 per funzionare 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 di sostituire un file di catalogo già esistente con lo stesso nome di CatalogFileName.cat.

SignTool catdb /v /u CatalogFileName.cat