Firmare un file .exe
1. Genera un certificato autofirmato con OpenSSL
- Genera una chiave privata (private key)
genpkey -algorithm RSA -out chiave_privata.key -aes256
- inserire la password
- ripetere la password
- Genera un certificato autofirmato in formato X.509 usando la chiave privata
openssl req -new -x509 -key chiave_privata.key -out certificato.crt -days 365
- inserire la password creata precedentemente
- compilare i campi richiesti
Questi comandi genereranno:
- chiave_privata.key: la chiave privata.
- certificato.crt: il certificato autofirmato, valido per 365 giorni.
2. Crea il file .pfx
- Per creare il file
.pfx
contenente sia la chiave privata che il certificato:openssl pkcs12 -export -out certificato.pfx -inkey chiave_privata.key -in certificato.crt
- inserire la password usata in precedenze
- inserire una password di esportazione
- ripeter la password
3. Firma il file .exe
con SignTool (solo su Windows)
- installare SignTool (solo per Windows)
- Firmare il file .exe, 2 modi possibili:
- tramite cmd:
signtool sign /f certificato.pfx /p PASSWORD /t http://timestamp.digicert.com /v nomefile.exe
- tramite applicazione SignGUI
Il programma sarà stato firmato correttamente nel momento in cui, facendo tasto destro sul file, andando su proprietà , sarà comparsa la voce “firme digitali”.
- tramite cmd:
Nota:
Se si sta firmando un file .exe, scritto in java ed esportato da .jar a .exe usando launch4j, se si prova ad aprire l’eseguibile dopo la firma si otterrà probabilmente il seguente errore:

https://github.com/ebourg/jsign/issues/80
Per risolvere questo problema, occorre seguire i seguenti passaggi:
- nella sezione “Classpath” di launch4j occorre selezionare il file .jar che si vuole esportare, il programma capirà in automatico la main class e in questo modo è possibile risolvere il problema
- Dopo aver rigenerato il file .exe grazie a launch4j, sarĂ a questo punto possibile ri-firmarlo.