使用非Microsoft编译器,我已经为Windows编写了一个小应用程序,我想免费赠送或出售一些微不足道的数量(5美元说)。该程序不使用注册表,但我想将其作为使用免费工具(例如InnoSetup)创建的安装程序可执行文件(例如MyAppInstall.exe)提供。
从Signing a Windows EXE file和其他来源我的理解如下:
makecert.exe
signtool.exe
,它只能通过下载和安装至少590 MB的其他东西(SDK)来获得。问:有没有替代微软的signtool.exe
有kSign,他们的博客也有一篇关于how to integrate with Inno Setup的文章。
它不是signtool的完全替代品(即它不会在签署驱动程序包时签署.cat和.sys文件),但它将对EXE,DLL,COM,CAB和OCX文件进行数字签名。
signtool
的另一种选择是Mono的signcode
。 Mozilla开发者网络有一个very useful article将您的证书转换为SPC / PVK格式并使用Authenticode签署您的EXE:
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
signcode \
-spc authenticode.spc \
-v authenticode.pvk \
-a sha1 -$ commercial \
-n My\ Application \
-i http://www.example.com/ \
-t http://timestamp.verisign.com/scripts/timstamp.dll \
-tr 10 \
MyApp.exe
与接受密码短语作为命令行参数的signtool
不同,似乎signcode
必须在标准输入上给出密码短语。我能够使用signcode [arguments] < passphrase.txt
。
Catch 22:我听说过的唯一代码签名工具是signtool.exe,它只能通过下载和安装至少590 MB的其他东西(SDK)来获得。
不需要。您不需要安装整个SDK来安装signtool.exe。使用SDK Web安装程序并选择仅安装“工具”。
但是,坏消息是没有签名工具可以帮助您绕过Windows警告,如果您没有CA签名证书,因为无法创建任何东西。好消息是许多CA为开源开发人员提供免费代码签名证书,但您应该使用它只签署免费软件。因此,这是您的选择:支付给CA并继续销售您的软件,或者不付费并免费分发。看起来很公平。
尝试使用this free application,它还允许您设置已签名可执行文件的其他属性,例如公司名称,详细信息,产品名称等。