2012-03-02 17 views
5

Attualmente viene generato un programma di installazione per un programma che utilizza NSIS su una macchina Linux. I binari NSIS sono stati compilati per Ubuntu e l'uso dello script .nsi non presenta difficoltà. Tuttavia, il file setup.exe risultante non è firmato. Ciò si traduce in avvertenze spaventose per i nostri utenti che scaricano l'installatore tramite i browser Web più comuni, nonché gli avvisi da Windows stesso durante l'esecuzione.Firma il programma di installazione NSIS su Linux box

Desideriamo evitare questi avvisi e, a meno che manchi qualcosa, è necessario utilizzare uno strumento di Windows per firmare il file setup.exe generato. C'è un modo per farlo su un computer non Windows?

Sfortunatamente, ogni programma di installazione è univoco (diversi file sono raggruppati in base alla richiesta del cliente e un ID univoco incluso) quindi non posso firmare il programma di installazione su un computer Windows e quindi caricarlo.

risposta

1

Ho dovuto farlo poche settimane fa, senza usare vino. Quello che ho fatto è stato importare il file pfx in windows e poi esportarlo con l'opzione "Includi tutti i certificati nel percorso del certificato se possibile". poi ho seguito le istruzioni su this page.

Dopo avere tutti i CERT (SPC ei file PVK) si consiglia di utilizzare il seguente comando:

signcode -spc [spc file] -v [pvk file] -a sha1 -$ commercial -t http://timestamp.verisign.com/scripts/timstamp.dll -tr 10 [exe file to sign] 

ho dovuto installare mono-dev pack:

sudo apt-get install mono-devel 
+0

OpenSSL segnala che '-pvk-strong' è un'opzione sconosciuta. Ho tentato di ometterlo, ma ho riscontrato un errore durante l'esecuzione di 'signcode'; richiede una passphrase. Presumo che questo sarebbe lo stesso che ho usato durante l'esportazione del certificato da Windows, ma questo non funziona. Dove sto andando fuori strada? –

+0

Risulta il download dell'ultima versione di OpenSSL e la sua creazione ha eliminato quell'errore. Non so perché Ubuntu non ha questo in apt. :( –

+0

@Tom G: perché cercano di mantenere le cose stabili, soprattutto sul canale di rilascio di LTS. Debian è ancora più conservativo. – 0xC0000022L

0

La firma dei file per Windows utilizza le firme Authenticode di Microsoft. C'è uno strumento nell'SDK che firma Executables e DLL (signtool.exe). Potresti essere in grado di farlo utilizzando Wine.

È anche possibile firmare i file tramite chiamate API di Windows - queste funzioni potrebbero essere implementate anche in Wine aswell, ma dubito che sia vero perché Authenticode viene utilizzato e implementato da Microsoft (per quanto ne so).

Tuttavia questo strumento non lo fa molto: in pratica aggiunge il certificato e un timestamp firmato alla fine del file. Potrebbero esserci anche adattamenti per Linux.

Ecco uno link per qualcuno che ha funzionato utilizzando il codice di accesso.

6

La scelta migliore è probabilmente l'uso di: osslsigncode. Costruito facilmente per me (assicurati di avere le intestazioni OpenSSL disponibili). Potrebbe avere delle difficoltà con il criterio di firma in modalità kernel, tuttavia (incorporando i certificati padre fino alla radice), quindi alla fine potrebbe ancora essere necessario ricorrere a WINE.

+1

osslsigncode ha lavorato per me. Ora sono in grado di firmare ex utilizzando un pfx, grazie. –

Problemi correlati