签署一个Windows EXE文件

我有一个我想签名的EXE文件,这样Windows就不会警告最终用户关于来自“未知发布者”的应用程序。 我不是Windows开发人员。 有问题的应用程序是从生成屏幕保护程序的应用程序生成的屏幕保护程序。 这样我就没有影响如何生成文件。

我已经发现,我需要像Verisign或instantssl.com这样的CA 代码签名证书。 我不明白的是我需要做的(如果可能的话)签署我的EXE文件。 什么是简单的解释?

梅尔·格林的回答让我进一步,但signtool希望我指定什么证书使用在任何情况下。 我可以得到一个免费的代码签名证书,以testing这是否会为我工作吗?

另请注明哪种证书是正确的。 大多数网站只提到“代码签名”,并谈论签署用户实际编制的应用程序。 这不是我的情况。

您可以尝试使用微软的Sign工具

您将其作为Windows Server 2008和.NET 3.5的Windows SDK的一部分进行下载。 一旦下载,你可以像这样从命令行使用它:

signtool标志/一个MyFile.exe

这签署了一个可执行文件。 我不知道它使用什么证书。

或者你可以尝试:

signtool signwizard

这将启动一个向导,将引导您签署您的应用程序。


如果您希望获得可用于testing签名可执行文件的过程的证书,则可以使用.NET工具Makecert

证书创build工具(Makecert.exe)

创build自己的证书并使用它来签署可执行文件后,您需要手动将其添加为您计算机的受信任根CA,以便UAC告知用户运行该证书是否来自可信来源。 重要安装证书作为ROOT CA将危及您的用户隐私。 看看DELL发生了什么事。 你可以在代码和Windows中find更多信息来完成这个工作:

  • 堆栈溢出问题将证书安装到Windows本地用户证书存储在C#

  • 在Windows Vista中安装自签名证书作为受信任的根CA.

希望能够为任何尝试这样做的人提供更多的信息!

ASP的杂志ASPects有关如何签名代码的详细描述(你必须是成员才能阅读文章)。 你可以通过http://www.asp-shareware.org/下载;

这里的链接描述如何制作自己的testing证书 。

这也可能是有趣的。

如果您正在进行开源开发,您可以从Certum获得免费代码签名证书。

我已经使用他们的证书一年多了,它从Windows中摆脱了未知的发布者消息。

至于签署代码我使用这样的脚本中使用signtool.exe :

signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe 

另一种select,如果你需要在Linux上签名的话,可以使用Mono项目工具中的 Signcode 。 它在Ubuntu上受支持 。

还有一个select,如果你在Windows 10上开发,但是没有安装微软的signtool.exe,你可以在Windows上的Ubuntu上使用Bash来签名你的应用程序。 这是一个跑下来:

https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/