Firma un file EXE di Windows

Ho un file EXE che vorrei firmare in modo che Windows non avvisi l’utente finale su un’applicazione da un “editore sconosciuto”. Non sono uno sviluppatore di Windows. L’applicazione in questione è uno screensaver generato da un’applicazione che genera applicazioni salvaschermo. In quanto tale, non ho alcuna influenza su come viene generato il file.

Ho già scoperto che avrò bisogno di un certificato di firma del codice da una CA come Verisign o instantssl.com. Quello che non capisco è quello che devo fare (se ansible) per firmare il mio file EXE. Qual è una spiegazione semplice?

La risposta di Mel Green mi ha portato oltre, ma signtool vuole che specifichi quale certificato usare in ogni caso. Posso ottenere in qualche modo un certificato di firma del codice gratuito per verificare se questo funzionerà per me?

Inoltre, si prega di specificare quale tipo di certificato è quello corretto. La maggior parte dei siti menziona solo la “firma del codice” e parla di applicazioni di firma che vengono effettivamente compilate dall’utente. Questo non è il mio caso.

Puoi provare a utilizzare lo strumento di firma di Microsoft

Lo si scarica come parte di Windows SDK per Windows Server 2008 e .NET 3.5. Una volta scaricato, puoi usarlo dalla riga di comando in questo modo:

signtool sign / a MyFile.exe

Questo firma un singolo eseguibile. Non sono sicuro di quale certificato utilizzi.

Oppure puoi provare:

signtool signwizard

Verrà avviato un wizard che ti guiderà attraverso la firma della tua applicazione.


Se desideri ottenere un certificato che puoi utilizzare per testare il tuo processo di firma del file eseguibile, puoi utilizzare lo strumento .NET Makecert .

Strumento di creazione del certificato (Makecert.exe)

Dopo aver creato il proprio certificato e averlo utilizzato per firmare il file eseguibile, sarà necessario aggiungerlo manualmente come CA di radice affidabile per il proprio computer affinché UAC possa comunicare all’utente che lo sta eseguendo che proviene da una fonte attendibile. Importante Installare un certificato come ROOT CA metterà in pericolo la privacy degli utenti. Guarda cosa è successo con DELL. Puoi trovare ulteriori informazioni per realizzare questo sia in codice che tramite Windows in:

  • Domanda di overflow dello stack Installa i certificati nell’archivio certificati utente locale di Windows in C #

  • Installazione di un certificato autofirmato come CA radice affidabile in Windows Vista

Speriamo che fornisca ulteriori informazioni a chiunque tenti di farlo!

Se si sta sviluppando open source, è ansible ottenere un certificato di firma codice economico gratuito da Certum .

Utilizzo il loro certificato da più di un anno e si sbarazza del messaggio del publisher sconosciuto da Windows.

Per quanto riguarda il codice di firma, utilizzo signtool.exe da uno script come questo:

signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe 

La rivista ASP di ASP ha una descrizione dettagliata su come firmare il codice (Devi essere un membro per leggere l’articolo). Puoi scaricarlo tramite http://www.asp-shareware.org/

Ecco il link alla descrizione di come puoi creare il tuo certificato di prova .

Questo potrebbe anche essere interessante.

Un’altra opzione, se è necessario firmare l’eseguibile su una macchina Linux, è usare il codice d’accesso dagli strumenti del progetto Mono . È supportato su Ubuntu .

Ho avuto lo stesso scenario nel mio lavoro e qui ci sono le nostre scoperte

La prima cosa che devi fare è ottenere il certificato e installarlo sul tuo computer, puoi acquistarne uno da un’Autorità di certificazione o generarne uno usando Makecert .

Ecco i pro e i contro delle 2 opzioni

Acquista un certificato

  • Professionisti
    • L’utilizzo di un certificato emesso da una CA (autorità di certificazione) garantisce che Windows non avviserà l’utente finale di un’applicazione da un “editore sconosciuto” su qualsiasi computer che utilizza il certificato dalla CA (il sistema operativo normalmente viene fornito con i certificati di origine da CA manny )
  • Contro:
    • C’è un costo per ottenere un certificato da una CA

Genera un certificato usando Makecert

  • Professionisti:
    • I passaggi sono semplici e puoi condividere il certificato con gli utenti finali
  • Contro:
    • Gli utenti finali dovranno installare manualmente il certificato sulle proprie macchine e, a seconda dei clienti, potrebbero non essere un’opzione
    • I certificati generati con makecert vengono normalmente utilizzati per lo sviluppo e il testing, non per la produzione

Firma il file eseguibile

Esistono due modi per firmare il file desiderato:

  • Utilizzando un certificato installato sul computer

    signtool.exe sign / a / s MY / sha1 sha1_thumbprint_value / t http://timestamp.verisign.com/scripts/timstamp.dll / v “C: \ filename.dll”

    • In questo esempio utilizziamo un certificato archiviato nella cartella Personale con un’identificazione personale SHA1 (questa identificazione personale proviene dal certificato) per firmare il file che si trova in “C: \ filename.dll”
  • Utilizzando un file di certificato

    signtool sign / tr http://timestamp.digicert.com / td sha256 / fd sha256 / f “c: \ percorso \ a \ mycert.pfx” / p pfxpassword “c: \ percorso \ a \ file.exe”

    • In questo esempio utilizziamo il certificato “c: \ path \ to \ mycert.pfx” con la password pfxpassword per firmare il file “c: \ path \ to \ file.exe”

Prova la tua firma

Metodo 1: utilizzo di signtool

Vai a: Start> Esegui tipo CMD> fai clic su OK Al prompt dei comandi, inserisci la directory in cui esiste il signtool Esegui quanto segue:

signtool.exe verify / pa / v “C: \ filename.dll”

Metodo 2: utilizzo di Windows

Fare clic con il pulsante destro del mouse sul file firmato Selezionare Proprietà Selezionare la scheda Firme digitali. La firma verrà visualizzata nella sezione Elenco firme.

Spero che questo possa aiutarti

fonti:

E ancora un’altra opzione, se stai sviluppando su Windows 10 ma non hai installato signtool.exe di Microsoft, puoi usare Bash su Ubuntu su Windows per firmare la tua app. Ecco una corsa verso il basso:

https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/

Riferimento https://steward-fu.github.io/website/driver/wdm/self_sign.htm Nota: signtool.exe di Microsoft SDK

1.Prima volta (per creare un certificato privato)

Makecert -r -pe -ss YourName YourName.cer

certmgr.exe -add YourName.cer -s -r root localeMachine

2.After (per aggiungere il tuo segno alla tua app)

signtool sign / s YourName YourApp.exe

Usa il seguente link per firmare il file .exe (setup / installer) (firma file exe / setup senza usare il setup signtool di Microsoft)

https://ebourg.github.io/jsign/#files

comando di esempio java -jar jsign-2.0.jar –keystore keystore.jks “–alias alias –storepass password MyInstaller.exe

Ha funzionato per me 🙂