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 - 代码签名证书的主要内容,如果未能解决你的问题,请参考以下文章