使用Signtool创建密钥并对可执行文件进行签名

4

我该如何签署 Visual C# 可执行文件?

SignTool.exe 找不到证书。

我该如何创建一个自签名的密钥和证书,使 signtool 能够看到证书并使用它?

已安装 OpenSSL 和 Visual Studio 2010 Express。运行 Windows 7 Ultimate x64。

使用来自 Windows 驱动程序套件的 SignTool.exe。

1个回答

9
使用自签名证书为您的二进制文件进行数字签名,基本上违反了使用数字证书与程序的概念。基本思想是通过使用由受信任的证书颁发机构(CA)签名的已签名证书来证明该代码是由您创建的(真实性)并且自发布以来未被修改过(完整性)。
对于.Net,在二进制文件进行数字签名时,在启动期间将自动验证其完整性和真实性。虽然我个人没有测试过,但使用自签名证书可能会给您带来很多问题。
如果要为程序进行数字签名,则需要从CA中投资购买代码签名证书。有许多公司可以提供此服务(VerisignThawte),但需要支付费用。
虽然证书费用似乎有些高昂,但请记住,您不仅购买了数字证书,还获得了全天候的证书验证。每当有人启动您的程序时,它都会确保该程序是由您编写的,并且自发布以来未被更改。
一旦您获得证书,您可以按照如何:签署应用程序和部署清单中的步骤对程序进行数字签名。 更新: 如果此程序严格为内部应用程序(仅限于您或您的企业),您可以创建自己的CA。由于只有您运行它,因此只有您需要验证它。 CA证书需要安装为所有运行该程序的计算机上的受信任的根证书(或者如果您可以访问Windows Server,则可以设置真正的工作CA)。

1
是的,这是一个内部应用程序。感谢您提供的最后两个链接。证书已安装为受信任的根证书。唯一的问题是SignTool.exe仍然会出现以下错误:“SignTool错误:未找到符合所有给定条件的证书。”感谢您的回答。应该注册。 - Kevin
为什么不使用内置方法来签署可执行文件呢?C#编译器可以为您签署代码,具体内容请参考http://msdn.microsoft.com/en-US/library/che5h906%28v=VS.100%29.aspx。 - jveazey
从未见过。谢谢。使用vs生成了一个测试证书,并使用signtool工具。不幸的是,我已经设置了浏览器在退出时删除cookie,而且我还没有stackoverflow账户。非常感谢您迄今为止的帮助。 - Kevin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接