bg-tutorials

Come firmare un file EXE utilizzando un certificato di firma del codice?

Firma il file Exe

Se sviluppi o distribuisci software per Windows, capire come firmare un file EXE garantisce che le tue applicazioni siano affidabili e prive di avvisi di sicurezza. La firma del codice verifica l’autenticità e l’integrità di un file eseguibile, assicurando agli utenti che il software proviene da una fonte legittima e non è stato manomesso. Senza una firma digitale valida, Windows potrebbe bloccare l’applicazione o visualizzare avvisi di sicurezza, rendendo difficile ottenere la fiducia degli utenti.

Questo articolo spiega come firmare un file eseguibile, trattando tutto ciò che riguarda i requisiti e le istruzioni passo-passo, la verifica e i vantaggi della firma di un file EXE.

Alla fine di questa guida, saprai come ottenere e installare un certificato di firma del codice, usare signtool.exe di Microsoft per firmare un file EXE e verificare che il tuo eseguibile sia firmato correttamente. Iniziamo.


Requisiti prima di firmare un EXE o un’applicazione

Prima di firmare un file EXE, devi avere gli strumenti e la configurazione giusta. La firma del codice non consiste solo nell’apporre una firma digitale. Richiede un certificato valido, un’archiviazione sicura delle chiavi e un software di firma adeguato. Di seguito ti illustreremo passo dopo passo i requisiti fondamentali, dalla scelta del certificato giusto alla configurazione del software necessario.

1. Ottieni un certificato di firma del codice

Per prima cosa, hai bisogno di un certificato di firma del codice emesso da un’autorità di certificazione (CA) affidabile come DigiCert o Sectigo. Questo certificato verifica la tua identità di editore di software.

Dal 1° giugno 2023, tutti i certificati di firma del codice devono memorizzare la chiave privata su un hardware sicuro. Di conseguenza, non puoi generare o conservare la chiave privata sul tuo computer locale. Deve invece essere memorizzato su un dispositivo approvato FIPS 140-2 Livello 2+, come un token USB SafeNet o un modulo di sicurezza hardware (HSM).

I certificati di firma del codice di DigiCert e GoGetSSL vengono emessi per un anno, indipendentemente dal fatto che si utilizzi un token hardware fornito dalla CA o un proprio dispositivo hardware supportato. I certificati Sectigo/Comodo seguono un modello diverso, consentendo piani pluriennali (fino a tre anni) solo se si utilizza il proprio modulo hardware.

Il tipo di certificato scelto influisce sulla gestione della memorizzazione delle chiavi:

  • I certificati EV Code Signing sono sempre accompagnati da un token USB SafeNet rilasciato dalla CA. Questo dispositivo fisico contiene la tua chiave privata ed è necessario ogni volta che firmi un file EXE.
  • I certificati standard di firma del codice non includono un token USB. Puoi invece utilizzare un servizio di firma basato sul cloud (come KeyLocker di DigiCert) o memorizzare la chiave privata sul tuo HSM, se la tua CA lo consente.

2. Imposta il tuo ambiente di firma

Una volta ottenuto il certificato e il dispositivo di archiviazione sicuro, ti servono gli strumenti giusti. Windows SDK (Software Development Kit) include l’utility di firma necessaria, signtool.exe, che userai per applicare la firma digitale. Se non è già installata, puoi scaricare l’ultima versione dal sito ufficiale di Microsoft.

Installatore Signtool

Se utilizzi un certificato EV Code Signing, dovrai anche installare il software SafeNet Authentication Client. Questo consente al tuo sistema di comunicare con il token USB e di recuperare la chiave privata in modo sicuro. Se stai firmando con un HSM, assicurati che il dispositivo sia configurato in modo appropriato e che il certificato sia accessibile dal tuo ambiente di firma.

Safenet

Devi anche avere i privilegi di amministratore sul tuo computer. La firma del codice richiede permessi elevati, quindi esegui il Prompt dei comandi o PowerShell come amministratore prima di eseguire qualsiasi comando di firma.


3. Perché la marcatura temporale è importante

Una parte fondamentale del processo di firma è il timestamping, che assicura che la firma digitale rimanga valida anche dopo la scadenza del certificato. Senza un timestamp, Windows tratterà il tuo EXE firmato come non attendibile una volta che il certificato avrà raggiunto la sua data di scadenza.

Quando firmi il tuo file, lo strumento di firma contatta un server di timestamping che registra la data e l’ora esatta della firma. Questo dimostra che il tuo file è stato firmato quando il certificato era ancora valido. La maggior parte delle CA fornisce servizi di timestamping gratuitamente. Se non aggiungi un timestamp, gli utenti vedranno avvisi di firma scaduta, facendo apparire la tua applicazione non sicura.


4. Preparativi finali prima della firma

Prima di firmare il tuo EXE, controlla che gli strumenti di firma, i driver e il dispositivo di archiviazione sicura siano configurati correttamente. Se utilizzi un HSM, verifica che la chiave sia accessibile e configurata correttamente. Se stai usando un token USB SafeNet, assicurati che sia collegato e che il SafeNet Authentication Client sia in esecuzione.

Dopo aver sistemato tutto, sei pronto per firmare il tuo file EXE. Inizialmente il processo potrebbe sembrare complesso, ma seguendo questi passaggi il tuo software sarà considerato affidabile da Windows, eviterà gli avvisi di sicurezza e rassicurerà gli utenti sulla sicurezza dell’installazione della tua applicazione.


Guida passo per passo alla firma di un file EXE

Di seguito troverai una guida dettagliata e aggiornata su come firmare un EXE, che ora deve essere memorizzato su un modulo di sicurezza hardware (HSM) o su un token USB per una maggiore sicurezza.

Passo 1: Inserire l’HSM o il Token USB

Prima di poter firmare un EXE, devi collegare il token hardware o HSM che contiene il certificato di firma del codice e la chiave privata. Le autorità di certificazione ora richiedono che tutti i certificati di firma del codice siano memorizzati su dispositivi approvati da FIPS 140-2 Livello 2, come un token USB SafeNet o un HSM YubiKey.

Passi per collegare il token hardware:

  1. Collega l ‘HSM o il token USB al tuo computer Windows.
  2. Se richiesto, installa i driver necessari (la maggior parte dei dispositivi si installa automaticamente).
  3. Assicurati di aver installato il SafeNet Authentication Client o il software HSM richiesto.

Se utilizzi un HSM basato sul cloud (come Azure Key Vault o AWS CloudHSM), assicurati che le credenziali siano impostate correttamente prima di procedere.


Passo 2: Aprire il Prompt dei comandi come amministratore

Poiché la firma richiede i permessi di sistema, devi utilizzare il Prompt dei comandi (cmd.exe) o PowerShell con diritti amministrativi.

I passaggi per aprire il Prompt dei comandi come amministratore:

  1. Clicca sul menu Start e digita cmd.
  2. Clicca con il tasto destro del mouse su Prompt dei comandi e seleziona Esegui come amministratore.

In alternativa, se preferisci PowerShell, segui gli stessi passaggi ma scrivi PowerShell.


Passo 3: Individuare SignTool

SignTool è un’utility Microsoft inclusa nell’SDK di Windows, necessaria per firmare gli eseguibili.

Trova SignTool sul tuo sistema:

La posizione di SignTool dipende dalla versione dell’SDK di Windows installata. Puoi trovarlo in:

C:\Programmi (x86)\Windows

Kits\10\bin\10.0.22621.0\x64\signtool.exe

Se necessario, sostituisci 10.0.22621.0 con la versione dell’SDK installata.

Percorso Signtool

Passo 4: Firmare l’EXE con SignTool

Ora che è tutto pronto, puoi firmare il tuo file EXE utilizzando SignTool. Di seguito trovi un esempio del comando corretto per firmare con un timestamp. Adattati di conseguenza.

signtool sign /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 /a "C:\path\to\yourfile.exe"

Spiegazione del comando:

  • /tr http://timestamp.digicert.com – Specifica l’URL del server timestamp RFC 3161 (da sostituire con il server della tua CA).
  • /SHA256 – Imposta SHA-256 come algoritmo di digest del timestamp.
  • /fd SHA256 – Specifica SHA-256 come algoritmo di digest dei file (le versioni moderne di Windows lo richiedono).
  • /a – Seleziona automaticamente il certificato di firma del codice corretto.
  • “C:\path\to\yourfile.exe” – Sostituisci con il percorso effettivo del tuo file EXE.

Passo 5: Inserire la password (se richiesta)

Se il tuo HSM o token USB richiede l’autenticazione, apparirà una finestra pop-up che ti chiederà la password o il PIN.

Cosa fare dopo:

  • Inserisci la password del tuo token SafeNet (o di qualsiasi altro HSM).
  • Se hai più certificati, SignTool potrebbe chiederti di selezionare quello corretto.

Nota: se utilizzi un HSM basato su cloud, potrebbe essere necessario autenticarsi tramite le credenziali API o un PIN sicuro.


Verifica il file EXE firmato

Dopo aver firmato il tuo EXE, verifica che la firma sia applicata correttamente e che includa un timestamp. Ecco come puoi verificarlo:

1. Controlla le proprietà del file

  1. Individua il file EXE firmato sul tuo computer.
  2. Clicca con il tasto destro del mouse sul file e seleziona Proprietà.
  3. Vai alla scheda Firme digitali.
  4. Se la firma è andata a buon fine, vedrai la firma elencata insieme a un timestamp. Clicca su Dettagli per confermare che il messaggio dice Questa firma digitale è OK.

2. Usa Poweshell per la verifica

Per un controllo più approfondito, puoi utilizzare Windows Powershell.

  1. Apri PowerShell (Win + X → PowerShell).
  2. Esegui il comando:

    Get-AuthenticodeSignature "C:\Windows\System32\cmd.exe"

    Verifica della firma con Powershell

Sostituisci “cmd/exe” con il tuo file exe.

In questo modo verranno visualizzati i dettagli della firma, compresa la catena del certificato e il timestamp. Se la firma non è valida o manca, Windows la segnalerà.

3. Test su un altro sistema

Per maggiore sicurezza, prova a scaricare ed eseguire l’EXE firmato su un altro computer. Se tutto è corretto, Windows dovrebbe riconoscerlo come applicazione affidabile senza mostrare avvisi di sicurezza. Seguendo questi passaggi, puoi assicurarti che il tuo EXE sia firmato correttamente e pronto per una distribuzione sicura.


Perché dovresti firmare un file EXE?

La firma delle applicazioni di Windows non è solo una questione di sicurezza, ma anche di fiducia, protezione e garanzia che il tuo software funzioni senza problemi. Ecco alcuni motivi per firmare un file eseguibile:

  • Gli utenti si fidano del software firmato. Quando un file EXE non è firmato, Windows lancia avvisi di sicurezza e alcuni sistemi possono bloccarlo completamente. Una firma verificata da un’autorità di certificazione affidabile rassicura gli utenti che il file è sicuro e non è stato manomesso.
  • Impedisce modifiche non autorizzate. Una volta firmato, un EXE agisce come un pacchetto sigillato. Se qualcuno cerca di alterarlo, per iniettare malware o modificare il codice, la firma si rompe e Windows contrassegna il file come non attendibile.
  • Riduce gli avvisi di Microsoft SmartScreen. SmartScreen è aggressivo con i software non firmati, mostrando avvisi che fanno esitare gli utenti ad installare. Firmare il tuo EXE, soprattutto con un certificato EV (Extended Validation) Code Signing, riduce notevolmente questi avvisi e rende l’installazione più fluida.
  • È essenziale per la distribuzione aziendale. Molti ambienti aziendali bloccano l’esecuzione di software non firmato sulle loro reti. Un EXE firmato soddisfa i criteri di sicurezza e garantisce la distribuzione senza problemi.
  • Il timestamp mantiene la validità della firma. Senza un timestamp, una firma diventa non valida nel momento in cui il certificato scade. Con un timestamp, la firma rimane valida anche dopo la scadenza, assicurando che il tuo software continui a funzionare.

Firma il tuo EXE con sicurezza – Ottieni un certificato di firma del codice

Una volta che sai come firmare un file exe e proteggere il tuo software dagli avvisi di sicurezza, il passo successivo è ottenere il certificato Code Signing adatto. Che tu sia uno sviluppatore indipendente o un’azienda, la firma del tuo EXE garantisce fiducia, installazioni fluide e protezione contro le manomissioni. Senza una firma valida, Windows segnalerà il tuo software, rendendo più difficile l’installazione e l’esecuzione da parte degli utenti.

Noi di SSL Dragon offriamo certificati OV e EV Code Signing dei migliori fornitori come DigiCert, Sectigo e GoGetSSL. Hai bisogno di una soluzione semplice? Scegli la convalida individuale o dell’organizzazione. Vuoi una reputazione più solida e meno avvisi SmartScreen? La convalida estesa è la soluzione giusta. Scegli, firma il tuo software con fiducia e fai in modo che gli avvisi di sicurezza appartengano al passato.

Risparmia il 10% sui certificati SSL ordinando oggi stesso da SSL Dragon!

Emissione rapida, crittografia avanzata, affidabilità del browser al 99,99%, assistenza dedicata e garanzia di rimborso entro 25 giorni. Codice coupon: SAVE10

Un'immagine dettagliata di un drago in volo
Scritto da

Scrittore di contenuti con esperienza, specializzato in certificati SSL. Trasforma intricati argomenti di cybersicurezza in contenuti chiari e coinvolgenti. Contribuisci a migliorare la sicurezza digitale attraverso narrazioni d'impatto.