2012-03-02 15 views
5

Actualmente genero un instalador para un programa que usa NSIS en una máquina Linux. Los binarios de NSIS se han compilado para Ubuntu, y usar el script .nsi no presenta dificultades. Sin embargo, el archivo resultante setup.exe no está firmado. Esto da lugar a temibles advertencias para nuestros usuarios que descargan el instalador a través de los navegadores web más comunes, así como también las advertencias de Windows cuando se ejecutan.Instalador de Sign NSIS en Linux box

Queremos evitar estas advertencias y, a menos que me falta algo, eso requiere el uso de una herramienta de Windows para firmar el archivo setup.exe generado. ¿Hay alguna manera de hacer esto en una máquina que no sea de Windows?

Desafortunadamente, cada instalador es único (se incluyen diferentes archivos según la solicitud del cliente, y se incluye una ID única) por lo que no puedo firmar el instalador en una máquina con Windows y luego cargarlo.

Respuesta

1

Tuve que hacerlo hace unas semanas, sin usar vino. Lo que hice fue importar el archivo pfx a Windows y luego exportarlo con la opción "Incluir todos los certificados en la ruta del certificado si es posible". luego seguí las instrucciones en this page.

Una vez que tenga todos los CERT (SPC y archivos PVK) se debe utilizar el siguiente 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] 

tuve que instalar el paquete de mono-dev:

sudo apt-get install mono-devel 
+0

OpenSSL informa que '-pvk-strong' es una opción desconocida. Intenté omitirlo, pero encuentro un error al ejecutar 'signcode'; solicita una frase de contraseña. Supuse que este sería el mismo que utilicé al exportar el certificado de Windows, pero esto no funciona. ¿Dónde me estoy desviando? –

+0

Resulta que la descarga de la última versión de OpenSSL y su creación eliminó ese error. No sé por qué Ubuntu no tiene eso en apt. :( –

+0

@Tom G: porque intentan mantener las cosas estables. Más aún en el canal de publicación LTS. Debian es aún más conservador. – 0xC0000022L

0

Los archivos de firma para Windows usan las firmas de Microsoft Authenticode. Hay una herramienta en el SDK que firma ejecutables y DLL (signtool.exe). Es posible que pueda ejecutar eso usando Wine.

También es posible firmar archivos a través de llamadas API de Windows; estas funciones pueden implementarse en Wine aswell, pero lo dudo porque Authenticode solo es utilizado e implementado por Microsoft (hasta donde yo sé).

Sin embargo, esta herramienta no es demasiado, básicamente agrega el certificado y una marca de tiempo firmada al final del archivo. También pueden existir adaptaciones para Linux.

Aquí hay un link a alguien que lo consiguió trabajando usando signcode.

6

Su mejor opción es probablemente el uso de: osslsigncode. Construido fácilmente para mí (asegúrese de tener los encabezados OpenSSL disponibles). Sin embargo, puede tener dificultades con la política de firma del modo kernel (incrustando los certificados principales hasta la raíz), por lo que aún tendrá que recurrir a WINE al final.

+1

osslsigncode trabajó para mí. Ahora puedo firmar exes usando un pfx, gracias. –

Cuestiones relacionadas