Puedes probar osslsigncode
Para firmar un archivo EXE o MSI ahora puede hacer:
osslsigncode sign -certs <cert-file> -key <der-key-file> \
-n "Your Application" -i http://www.yourwebsite.com/ \
-in yourapp.exe -out yourapp-signed.exe
o si está utilizando un archivo de clave PEM o PVK con una contraseña junto con un certificado PEM:
osslsigncode sign -certs <cert-file> \
-key <key-file> -pass <key-password> \
-n "Your Application" -i http://www.yourwebsite.com/ \
-in yourapp.exe -out yourapp-signed.exe
o si también desea agregar una marca de tiempo:
osslsigncode sign -certs <cert-file> -key <key-file> \
-n "Your Application" -i http://www.yourwebsite.com/ \
-t http://timestamp.verisign.com/scripts/timstamp.dll \
-in yourapp.exe -out yourapp-signed.exe
Puede usar un certificado y una clave almacenados en un contenedor PKCS#12:
osslsigncode sign -pkcs12 <pkcs12-file> -pass <pkcs12-password> \
-n "Your Application" -i http://www.yourwebsite.com/ \
-in yourapp.exe -out yourapp-signed.exe
Para firmar un archivo CAB que contiene archivos de clase Java:
osslsigncode sign -certs <cert-file> -key <key-file> \
-n "Your Application" -i http://www.yourwebsite.com/ \
-jp low \
-in yourapp.cab -out yourapp-signed.cab
En realidad, es bastante sencillo hacerlo usando Mono
herramienta de señalización; la parte complicada (descrita con más detalle en el artículo de Mozilla vinculado) es copiar el certificado en el formato correcto de Windows a Linux.
La conversión del archivo de certificado PFX de Windows a archivos PVK y SPC solo debe realizarse una vez al copiar el certificado de Windows a Linux;
openssl pkcs12 -in authenticode.pfx -nocerts -nodes -out key.pem
openssl rsa -in key.pem -outform PVK -pvk-strong -out authenticode.pvk
openssl pkcs12 -in authenticode.pfx -nokeys -nodes -out cert.pem
openssl crl2pkcs7 -nocrl -certfile cert.pem -outform DER -out authenticode.spc
En realidad, firmar el exe es sencillo;
signcode \
-spc authenticode.spc \
-v authenticode.pvk \
-a sha1 -$ commercial \
-n My\ Application \
-i http://www.example.com/ \
-t http://timestamp.digicert.com/scripts/timstamp.dll \
-tr 10 \
MyApp.exe