Firma di un file EXE di Windows


180

Ho un file EXE che vorrei firmare in modo che Windows non avvisasse l'utente finale di un'applicazione di 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 possibile) per firmare il mio file EXE. Qual è una semplice spiegazione?

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

Inoltre, specificare quale tipo di certificato è quello corretto. La maggior parte dei siti menziona solo la "firma del codice" e parla della firma di applicazioni che sono effettivamente compilate dall'utente. Questo non è il caso per me.


3
Solo curioso: quanto si deve pagare per acquistare un certificato?
InTheNameOfScience il

2
@Rigel all'incirca $ 400 all'anno, probabilmente non vale la pena :)
Sharan Arumugam

@SharanArumugam: WHAAT ?????? È come se Microsfot fosse contro software economico / gratuito!
InTheNameOfScience

Risposte:


116

Puoi provare a utilizzare lo strumento per i segni di Microsoft

Lo scarichi 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, usando il "miglior certificato" disponibile. (Se non si dispone di un certificato, verrà visualizzato un messaggio di errore SignTool.)

Oppure puoi provare:

signtool signwizard

Questo avvierà una procedura guidata che ti guiderà attraverso la firma della tua applicazione. (Questa opzione non è disponibile dopo Windows SDK 7.0.)


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

Strumento di creazione certificati (Makecert.exe)

Dopo aver creato il proprio certificato e averlo utilizzato per firmare il file eseguibile, è necessario aggiungerlo manualmente come CA radice attendibile per il computer in uso affinché l' UAC possa comunicare all'utente che lo esegue che proviene da un'origine attendibile. Importante . L'installazione di un certificato come ROOT CA metterà in pericolo la privacy degli utenti. Guarda cosa è successo con DELL. Puoi trovare ulteriori informazioni per ottenere ciò sia nel codice che attraverso Windows in:

Speriamo che fornisca qualche informazione in più per chiunque tenti di farlo!


Un flusso di lavoro di lavoro in questione separata: stackoverflow.com/questions/84847/...
The_Ghost

4
"Questo strumento viene installato automaticamente con Visual Studio. Per eseguire lo strumento, utilizzare il Prompt dei comandi per sviluppatori (o il Prompt dei comandi di Visual Studio in Windows 7)." msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.110).aspx
Westy92

Molto curioso anche del certificato usato da signtool.
Overdrivr,

1
L'opzione "signwizard" non è disponibile dopo Windows SDK 7.0
Omar Reis

Makecert è stato deprecato e un cmdlet di PowerShell New-SelfSignedCertificate dovrebbe invece essere utilizzato per creare un certificato di prova. Dettagli in stackoverflow.com/a/51443366/38117911 (risposta a una domanda collegata da The_Ghost).
Alexander Revo,

35

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

Compra un certificato

  • Professionisti
    • L'uso di un certificato emesso da una CA (Autorità di certificazione) garantirà che Windows non avviserà l'utente finale di un'applicazione di un "editore sconosciuto" su qualsiasi Computer che utilizza il certificato della CA (il sistema operativo normalmente viene fornito con i certificati radice di CA manny )
  • Contro:
    • C'è un costo per ottenere un certificato da una CA.

Generare un certificato utilizzando Makecert

  • Professionisti:
    • I passaggi sono semplici e puoi condividere il certificato con gli utenti finali
  • Contro:
    • Gli utenti finali dovranno installare manualmente il certificato sui propri computer e, a seconda dei client, potrebbe 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: \ nomefile.dll"

    • In questo esempio stiamo usando un certificato archiviato nella cartella Personale con un'identificazione personale SHA1 (Questa identificazione personale viene dal certificato) per firmare il file che si trova in "C: \ nomefile.dll"
  • Utilizzando un file di certificato

    signtool sign / tr http://timestamp.digicert.com / td sha256 / fd sha256 / f "c: \ path \ to \ mycert.pfx" / p pfxpassword "c: \ path \ to \ file.exe"

    • In questo esempio stiamo usando il certificato "c: \ path \ to \ mycert.pfx" con la password pfxpassword per firmare il file "c: \ path \ to \ file.exe"

Metti alla prova la tua firma

Metodo 1: utilizzo di signtool

Andare su: Start> Esegui digitare CMD> fare clic su OK Al prompt dei comandi, immettere la directory in cui esiste signtool Eseguire quanto segue:

signtool.exe verifica / pa / v "C: \ nomefile.dll"

Metodo 2: utilizzo di Windows

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

Spero che questo possa aiutarti

fonti:


Sono contento di poter aiutare @PhilLab
Erick Castrillo il

Si prega di fornire anche un preventivo di $$$. Grazie!
InTheNameOfScience

1
@WeGoToMars Penso che questo articolo possa aiutarti a cheapsslsecurity.com/sslproducts/codesigningcertificate.html o qui digicert.com/code-signing
Erick Castrillo,

31

Puoi ottenere un certificato di firma del codice economico gratuito da Certum se stai sviluppando open source.

Sto usando il loro certificato da oltre un anno e mi libera dal messaggio di editore sconosciuto di Windows.

Per quanto riguarda la firma del codice, uso 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

3
Non sembra più gratuito, ancora molto più economico, € 14
hultqvist

1
Hai ragione, non sembra più libero. ho appena rinnovato e non ho pagato nulla. Forse sono il nonno. Forse i loro processi interni sono rotti. Il loro sito web è sicuramente complicato.
Lee Richardson,


Il negozio Certum afferma che il loro certificato open source NON rimuoverà il messaggio del filtro Microsoft SmartScreen.
Markus Laire,

17

La rivista ASP degli ASPetti 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 collegamento a una descrizione su come è possibile creare il proprio certificato di prova .

Questo potrebbe anche essere interessante.


7
Addendum quattro anni dopo: Comodo è stato compromesso all'inizio del 2012 ( blogs.comodo.com/it-security/data-security/… ) e così molti agenti utenti ora rifiutano i certificati con un'autorità root di Comodo
A. Wilson,

8
Comodo è ancora una scommessa rischiosa a metà 2013 e, per "agenti utente", significa che Microsoft / Windows sono sicuramente quelli che decidono se mostrare quel famigerato messaggio "editore sconosciuto".
Dan W,

Siamo spiacenti, rimosso i consigli di servizio espliciti, che sono 1) non aggiornati e 2) sono stati esclusi off-topic ora (perché 1.).
Ingannare




4

Utilizzare il collegamento seguente per firmare il file .exe (programma di installazione / installazione) (segno file exe / programma di installazione senza utilizzare il programma di installazione 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 :)


3

Questa non è una risposta diretta alla domanda, ma è strettamente correlata (e utile spero) poiché prima o poi un programmatore avrà messo la mano nel portafoglio:

Quindi, i prezzi per la firma EV:

1 anno $ 350 + ($ 50 tariffa nascosta)
2 anni $ 600
3 anni $ 750
[www.ksoftware.net] [3]
eToken inviato come chiavetta USB. Nessun lettore necessario.
Effettivamente acquisti da Comodo (Sectigo)

1 Anno 350 euro
3 Anno 799 euro
sklep.certum.pl

1 anno $ 499 USD
3 anni $ 897 USD
sectigo.com

1 anno $ 410 in totale
2 anni $ 760 in totale
3 anni $ 950 in totale
www.globalsign.com

1 anno: $ 600 (era $ 104)
3 anni:?
www.digicert.com

1 anno: $ 700
3 anni: ridicolo costoso
[ https://trustcenter.websecurity.symantec.com/]

Maggiori prezzi qui:
https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html


Vedi anche il link aggiunto da Erick Castrillo: cheapsslsecurity.com/sslproducts/codesigningcertificate.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.