Windows Code-Signing进程和MS signtool.exe的替代?

问题描述 投票:4回答:4

使用非Microsoft编译器,我已经为Windows编写了一个小应用程序,我想免费赠送或出售一些微不足道的数量(5美元说)。该程序不使用注册表,但我想将其作为使用免费工具(例如InnoSetup)创建的安装程序可执行文件(例如MyAppInstall.exe)提供。

Signing a Windows EXE file和其他来源我的理解如下:

  1. 如果我没有签署安装程序,Windows将弹出一个警告对话框,警告用户该发布者未知,并建议他们不要运行该软件。这是不可取的。
  2. 如果我使用自我认证密钥对安装程序进行签名,则弹出对话框将至少提供发布者名称而不是“未知”。它会说发布商无法验证或发布商不受信任。这可能比被描述为未知的出版商要好一些。
  3. 如果我每年向CA支付约100美元,我可以获得一个代码签名证书,这将允许我提供可以轻松安装的有用的免费软件 - 而不会出现可怕的和令人反感的对话。
  4. 我可以使用OpenSSL的Windows版本来创建自我认证的代码签名密钥。这样我就不必从MS下载安装一个590 MB的SDK文件来获取微软的makecert.exe
  5. Catch 22:我听说的唯一代码签名工具是signtool.exe,它只能通过下载和安装至少590 MB的其他东西(SDK)来获得。

问:有没有替代微软的signtool.exe

code-signing digital-signature
4个回答
7
投票

kSign,他们的博客也有一篇关于how to integrate with Inno Setup的文章。

它不是signtool的完全替代品(即它不会在签署驱动程序包时签署.cat和.sys文件),但它将对EXE,DLL,COM,CAB和OCX文件进行数字签名。


3
投票

signtool的另一种选择是Monosigncode。 Mozilla开发者网络有一个very useful article将您的证书转换为SPC / PVK格式并使用Authenticode签署您的EXE:

将PFX转换为SPC / PVK

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

签署EXE

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


0
投票

Catch 22:我听说过的唯一代码签名工具是signtool.exe,它只能通过下载和安装至少590 MB的其他东西(SDK)来获得。

不需要。您不需要安装整个SDK来安装signtool.exe。使用SDK Web安装程序并选择仅安装“工​​具”。

但是,坏消息是没有签名工具可以帮助您绕过Windows警告,如果您没有CA签名证书,因为无法创建任何东西。好消息是许多CA为开源开发人员提供免费代码签名证书,但您应该使用它只签署免费软件。因此,这是您的选择:支付给CA并继续销售您的软件,或者不付费并免费分发。看起来很公平。


0
投票

尝试使用this free application,它还允许您设置已签名可执行文件的其他属性,例如公司名称,详细信息,产品名称等。

© www.soinside.com 2019 - 2024. All rights reserved.