{"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 a come firmare un'applicazione su Windows utilizzando il Windows SDK (lo strumento signtool) e un certificato di Code Signing. La guida presuppone che tu abbia un certificato di Code Signing in formato PFX e un ambiente di sviluppo Windows SDK installato sul tuo sistema operativo Windows. Scarica il SDK dal sito di Microsoft per la versione dei tuoi Windows, ad esempio Windows Software Development Kit (SDK) per Windows 10.

Uso di Signtool

Signtool.exe è un programma che firma le applicazioni con un certificato di Code Signing. Dopo aver installato il Windows SDK, usalo tramite la riga di comando. Per firmare le applicazioni, devi conoscere i parametri di base per poter invocare correttamente la firma dell'applicazione con il certificato e le impostazioni appropriate.

La firma avviene effettivamente tramite riga di comando e il certificato deve essere disponibile sul computer (non viene installato 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 inserire un timestamp, ma puoi farlo direttamente durante la firma del file.

Parametri utili:

  • /f SignCertFile – se utilizzi un file PFX per la firma, questo comando fa riferimento alla sua posizione. Ottenere un certificato di Code Signing in PFX non è più possibile.
  • /s StoreName – se utilizzi un deposito per i certificati (ad esempio su un token), specifica quale deve essere utilizzato. Il predefinito è My.
  • /t URL – aggiunge un timestamp e un riferimento ad esso. Gli URL dei server per il timestamp si trovano di seguito.
  • /td - algoritmo per l'impronta (digest) nel timestamp. Scegli almeno il parametro sha256 o superiore.
  • /fd - algoritmo per l'impronta (digest). Scegli almeno il parametro sha256 o superiore.

Puoi trovare la documentazione completa sul sito Microsoft o inserendo il comando „signtool sign /?“.

Un esempio di comando completo per firmare un file può essere il seguente:

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

Usa sempre il timestamp, ovvero l'impronta temporale. Garantisce all'applicazione firmata affidabilità anche dopo la scadenza del certificato utilizzato per la firma. Questo è molto importante poiché non dovrai rifirmare retroattivamente le vecchie applicazioni (tipicamente dopo due anni di scadenza del certificato di Code Signing) per renderle non inaffidabili. Se al momento della firma utilizzi un timestamp e il certificato è valido, anche l'applicazione sarà valida in futuro.

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

Questo server non ha alcun sito sul porto 80, quindi è inutile visitarlo tramite browser (non vedresti nulla).

Memoria dei certificati

Un certificato può essere memorizzato in più luoghi (in più memorie) e puoi richiamarlo in più modi. In passato era possibile memorizzare il certificato come file PFX, ma ora non è più possibile. Il file PFX può essere rubato da chiunque e, sebbene il PFX sia protetto da password, rappresenta un grande rischio di sicurezza (le password tendono ad essere molto deboli). Il PFX è utile soprattutto per i backup del certificato S/MIME o per il web.

Un modo comune per memorizzare un certificato di Code Signing è memorizzarlo su un token e quindi invocare in base al soggetto nel certificato. Questo metodo è sicuro e praticamente lo stesso della firma con il PFX di una volta. Senza la chiave privata, che non può essere esportata dal token, il certificato è inutile e non può essere utilizzato indebitamente; dopo cinque tentativi di inserimento errato della password, il token si blocca.

La firma utilizzando la memoria richiede 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 la memoria predefinita My e il software di firma troverà automaticamente il certificato stesso:

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

Automatizzazione del Code Signing tramite cloud HSM

L'automatizzazione della firma del codice è molto richiesta, con un certificato su token, tuttavia, non è possibile firmare automaticamente; non puoi usarlo nemmeno su un server. Fortunatamente, conosciamo servizi che sono adatti per automatizzare la firma. DigiCert offre il servizio KeyLocker, oppure il Software Trust Manager. Puoi anche avere chiavi di firma in un cloud HSM su Azure o Google Cloud.

Ulteriori informazioni sulle possibilità di automatizzazione della firma del codice sono disponibili nell'articolo Code Signing Centro.

Verifica della firma

Ora sai come firmare e hai dotato la tua applicazione della prima firma affidabile. Ora probabilmente sei interessato a come verificare la firma.
La verifica è possibile sia utilizzando lo strumento signtool:

signtool verify C:\test.exe

Più semplicemente, è possibile eseguire il controllo visualizzando le proprietà del file in Esplora risorse di Windows. Il dettaglio della firma può essere "esaminato" fino al dettaglio 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?