InnoSetup - 代码签名证书

Posted

技术标签:

【中文标题】InnoSetup - 代码签名证书【英文标题】:InnoSetup - Code Signing Certificate 【发布时间】:2013-10-10 05:53:01 【问题描述】:

我刚刚从 Comodo 购买了代码签名证书。我已经构建了一个小型 MS Access 数据库,我想使用 Inno Setup Installer 进行部署。该脚本运行良好,但我对代码签名完全陌生。

如何签署我的安装文件?我需要外部软件来签署证书还是可以在 Inno Setup 中进行?

我曾尝试寻找类似问题的答案,但没有人能告诉我我需要什么开始,以及如何去做。

【问题讨论】:

@TLama 链接已死 (~blog~) 这有效:support.ksoftware.net/support/solutions/articles/… 【参考方案1】:

从微软下载并安装signtool.exe后,如果在上一个答案的第三步没有添加到路径变量中,请将signtool.exe的完整路径放入签名工具的命令中:

D:\GUI\signtool.exe sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /a $p

【讨论】:

【参考方案2】:

你做的很简单,跟着一起努力吧

    打开 Inno Setup 并选择 Tools-> Configure Sign Tools 单击“添加..”并为其命名,我们将其命名为 MsSign,因为我正在使用来自 Microsoft 的 signtool.exe,您现在应该拥有类似 的内容 然后会询问您用于签名的工具的命令行,因为我使用的是 signtool.exe,所以我将使用

signtool.exe 签名 /tr http://timestamp.digicert.com /td sha256 /fd sha256 /a $p

注意最后的$p,Inno Setup 需要这个... 您现在应该有了这个,并注意我已经在我的路径变量中添加了 signtool.exe 的路径,并且我正在使用 DigiCert 的时间服务器来为我的签名添加时间戳

    在脚本中,您现在将以下代码添加到设置部分

    SignTool=MsSign $f

这一行,告诉编译器使用代码签名,它将使用我称为 MsSign 的变量,并对设置生成的输出进行签名。

它应该看起来像这样

当您查看生成的 EXE 时,您会看到数字签名

现在这对我有用,因为我已经以命令行可以获取签名的方式准备了我的签名存储,并且我只有一个代码签名签名,所以我不需要命名它,你的参数可能不同于我的是,这没关系,只要你的设置工作正常并且你的代码得到签名。

希望对您有所帮助并记住您需要变量中的 $p

【讨论】:

signtool 附带 Windows 驱动程序安装,请参阅第 2 点上的链接,然后在安装它后,您可以将位置添加到您的配置文件路径设置,然后登录并登录,您应该可以只需调用它,否则将路径放在第 3 步中 set PATH="C:\Program Files (x86)\Windows Kits\10\bin\x64";%PATH% 为我做了!谢谢 您实际上不需要将 signtool.exe 添加到 PATH。由于它是一个没有依赖关系的小型可执行文件 (410 KB),因此您可以选择将其复制到构建环境中需要它的任何位置,并且它的工作方式与从它所在的位置运行它一样好安装在 Windows 上。【参考方案3】:

要签署可执行文件(由 Inno Setup 生成的安装程序),只需创建一个批处理文件 (.bat) 并将此内容放入其中:

"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" sign /f Installer_Wizard_Code_Signing_Certificate.pfx /p password123 /t http://timestamp.verisign.com/scripts/timstamp.dll MySetupFile.exe

在哪里

"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" 是 Microsoft 签名实用程序(Microsoft SDK 的一部分)的路径

Installer_Wizard_Code_Signing_Certificate.pfx是您的证书

password123 是您证书的密码

MySetupFile.exe 是您要签名的安装文件

将所有文件(证书、要签名的设置和批处理文件)放在一个目录中并运行批处理文件。 Signtool 使用证书对文件进行签名,并根据官方服务器检查其有效性。

(你可以使用http://timestamp.verisign.com/scripts/timstamp.dll服务器虽然你有Comodo证书,但没关系。)

【讨论】:

你为什么不建议 Inno Setup 的内部签名支持?第三次,here 是一个描述如何做到这一点的教程。它来自 Comodo 的经销商,所以他们应该知道他们在说什么。 @TLama 你的回答解决了我的问题。我按照说明进行了编译,没有任何错误。感谢所有人以及 Ksign 背后的人......它让一切变得如此简单。 revolution.screenstepslive.com/s/revolution/m/10695/l/… @TLama 引用的链接已更改:certhelp.ksoftware.net/support/solutions/articles/… 我的教程是独立的,不需要任何第三方软件。 (我尝试了 TLama 的教程并没有为我工作,所以我编写了自定义解决方案)。

以上是关于InnoSetup - 代码签名证书的主要内容,如果未能解决你的问题,请参考以下文章

SSL证书代码签名证书文档签名证书及邮件签名证书有什么区别

SSL安全证书中的代码签名证书

代码签名证书与SSL证书区别

开发者为什么需要EV代码签名证书

微软代码签名证书使用指南(SignTool)

Thawte 企业版代码签名证书