如何对包中的二进制文件进行验证码签名?

How to authenticode sign binaries in packages?

在 Chocolatey 包中签署可执行文件的推荐方法是什么?

我的组织已在其新的 Windows 10 制度中实施了 AppLocker。虽然我理解为什么要实行该制度,但我不确定如何在我们放入包裹提要中的自定义 Chocolatey 包裹中实施它。我也不确定是否需要对安装文件和可执行文件进行签名。如果任何未签名的可执行文件尝试 运行,AppLocker 将停止执行。

Chocolatey 提到了一些关于在他们的安全部分签名的事情

https://github.com/chocolatey/choco/wiki/Security

路线图:https://chocolatey.org/docs/roadmap

向导"Code signing a windows application" (https://mkaz.blog/code/code-signing-a-windows-application/)

然而,我不知道从哪里开始。

背景

Chocolatey 提供的软件包(packagebuilder.exe、packageuploader.exe)中有几个二进制文件当前未经过验证码签名。

这是我们最近发现的问题,已列入需要处理的清单。

与此同时,让我们正确回答您的问题。

如何验证签名

老实说,您链接的博客 post 非常简单。但是,我将验证您可能拥有的一些 WTF。

Windows

的要求
  • 主要先决条件是您需要一个 Authenticode 证书(每年大约 200 美元以上)。是的,你真的需要这个 - 它确实需要一个组织的验证(或者如果你可以走那条路的话,一个人)。
  • 其次,您需要 Windows SDK,其中包含 signtool.exe.

如何签名

基本上你要拨打类似于:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" sign /t "http://timestamp.digicert.com" /fd [SHA1|SHA256|SHA512] /f C:\path\to\authenticode.certificate.pfx /p [YOURPASSWORD] /a "C:\path\to\the\file.exe"

根据您安装的 SDK,签名工具的路径可能略有不同。也像提到的文章一样,您可能希望坚持使用 SHA1 以获得大多数兼容性,但如果您愿意,可以更高。

以上内容改编自 Chocolatey (choco) 代码库,您可以在 https://github.com/chocolatey/choco/blob/54ddf11fa025e97e071ae884c738ef8456b60b76/.build.custom/codeSign.step#L42-L48) 查看它。

参考资料

但这对您没有帮助。您将面临的下一个问题是 Chocolatey 不会 运行 在受限语言模式 powershell