{"copy":"Copia","expand":"Aprire","collapse":"Chiudere","copy_success":"Copiato!","copy_error":"Copia non riuscita!"}

Come firmare le applicazioni su Windows (SDK)

Diamo un’occhiata insieme alla firma delle applicazioni su Windows utilizzando Windows SDK (strumento signtool) e un certificato di Code Signing. La guida presume che tu abbia un certificato di Code Signing pronto in formato PFX e che l'ambiente di sviluppo Windows SDK sia installato sul sistema operativo Windows. Scarica l'SDK dal sito di Microsoft per la versione del tuo Windows, ad esempio Windows Software Development Kit (SDK) per Windows 10.

Utilizzo di Signtool

Signtool.exe è un programma che firma le applicazioni con un certificato di Code Signing. Dopo l'installazione di Windows SDK, utilizzalo tramite la riga di comando. Per firmare le applicazioni, devi conoscere i parametri di base in modo da poter correttamente chiamare la firma dell'applicazione con il certificato e le impostazioni corrette.

La firma effettivamente avviene tramite la riga di comando e il certificato deve essere disponibile sul computer in questione (non si installa da nessuna parte).

Esempio di firma con signtool.exe
Esempio di firma con signtool.exe

I parametri di base (comandi) per la firma sono i seguenti:

signtool comando /parametro

Dei comandi, utilizzerai Sign per la firma e Verify per la verifica della firma del file. Timestamp è il comando per aggiungere un timestamp, ma puoi farlo direttamente quando firmi il file.

Parametri utili:

  • /f SignCertFile – se utilizzi un file PFX per la firma, questo comando si riferisce al suo percorso. Non è più possibile ottenere un certificato di Code Signing in PFX.
  • /s StoreName – se utilizzi un archivio di certificati (ad esempio su token), specifica quale deve essere utilizzato. Il predefinito è My.
  • /t URL – aggiunge un timestamp e il relativo link. Troverai gli URL dei server di timestamp di seguito.
  • /td - algoritmo di digest nel timestamp. Scegli almeno il parametro sha256 o superiore.
  • /fd - algoritmo di digest. Scegli almeno il parametro sha256 o superiore.

Trovi la documentazione completa sul sito di Microsoft oppure inserendo il comando „signtool sign /?“.

Il comando completo per firmare un file potrebbe apparire, ad esempio, così:

SignTool sign /n "My Company Certificate" /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe

Utilizza sempre il timestamp, ovvero il l'ora. Assicura che l'applicazione firmata rimanga affidabile anche dopo la scadenza del certificato utilizzato per la firma. Questo è molto importante perché non dovrai firmare nuovamente le applicazioni più vecchie (tipicamente dopo due anni di scadenza del certificato di Code Signing) per evitare che diventino inaffidabili. Se al momento della firma utilizzi il timestamp e il certificato è valido, anche l'applicazione sarà valida in futuro.

Ci sono diversi server che forniscono timestamp; consiglio di usare il server di timestamp di DigiCert: http://timestamp.digicert.com/

Questo server non ha alcun sito web sulla porta 80, quindi è inutile visitarlo con un browser (non vedrai nulla).

Archivi di certificati

Un certificato può essere memorizzato in più posti (in più archivi) e puoi “richiamarlo” in diversi modi. In passato era possibile salvare il certificato come file PFX, ma ciò non è più possibile. Il file PFX può essere rubato e, sebbene sia protetto da password, rappresenta un grande rischio per la sicurezza (le password sono spesso molto deboli). PFX è utile soprattutto per backup di certificati S/MIME o per il web.

Il modo comune di memorizzare un certificato di Code signing è memorizzarlo su un token e richiamarlo successivamente in base al soggetto nel certificato. Questo metodo è sicuro e praticamente identico alla precedente firma con PFX. Senza la chiave privata, che non può essere esportata dal token, il certificato è inutile e quindi non può essere abusato; se la password viene inserita male cinque volte, il token si blocca.

La firma con l’utilizzo di un archivio richiede quindi il parametro /n SubjectName:

signtool sign /n "My Company Certificate" /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe

Oppure puoi scegliere l'archivio predefinito My, e il software di firma troverà automaticamente il certificato:

signtool sign /s My /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe

Verifica della firma

Ora sai firmare e hai fornito alla tua applicazione la prima firma affidabile. Sicuramente ora ti interessa sapere come controllare la firma.
La verifica è possibile sia tramite lo strumento signtool:

signtool verify C:\test.exe

La verifica può essere effettuata anche più semplicemente visualizzando le proprietà del file in Esplora risorse di Windows. Puoi "analizzare a fondo" il dettaglio della firma fino al particolare del certificato utilizzato.

Dettaglio della firma dell'applicazione in Esplora risorse di Windows
Dettaglio della firma dell'applicazione in Esplora risorse di Windows
Ti è stato utile questo articolo?