2010-11-07 102 views
4

我将如何签署Visual C#可执行文件?创建密钥并用signtool签名可执行文件

SignTool.exe找不到证书。

我将如何创建自签名密钥和证书,并让signtool能够查看证书并使用它?

安装了OpenSSL和Visual Studio 2010 Express。运行Windows 7旗舰版x64。

使用Windows Driver Kit中的SignTool.exe。

回答

9

使用自签名证书对您的二进制文件进行数字签名几乎违背了带有程序的concept of using digital certificates。基本的想法是证明代码是由你创建的(真实性),并且自从发布它(完整性)以来未被修改过。这必须通过使用由可信认证机构(CA)签署的签名证书来完成。

使用.Net,当二进制数字签名时,它在验证启动期间的完整性和真实性时已验证了automatically。虽然我没有亲自测试过,但使用自签名证书可能会导致很多问题。

如果您想对您的程序进行数字签名,您需要投资CA的代码签名证书。有一些公司可以提供这项服务(Verisign,Thawte),收费。

虽然费用在价格上似乎有点极端,但请记住,您不仅仅是购买数字证书,还要全天候验证该证书。任何时候有人开始你的程序,它都会确保程序是由你写的,并且程序自你发布以来一直没有改变。

一旦您拥有证书,您可以按照How to: Sign Application and Deployment Manifests中的步骤对您的程序进行数字签名。

更新:如果此程序严格为内部应用程序(仅限于您或您的企业),you can created your own CA。既然你会是唯一一个运行它,只有你需要验证它。 CA证书需要在所有运行该程序的机器上安装为Trusted Root Certificate(或者如果您有权访问Windows Server,则可以设置一个真实的CA)。

+1

是的,这是一个内部应用程序。感谢最后两个链接。证书作为受信任的根证书安装。唯一的问题是SignTool.exe仍然会出现以下错误:“SignTool错误:找不到符合所有给定条件的证书。”谢谢回答。应该注册。 – Kevin 2010-11-07 07:24:06

+0

为什么不使用内置方法来签署可执行文件? C#编译器能够为您在http://msdn.microsoft.com/en-US/library/che5h906%28v=VS.100%29.aspx中介绍的代码签名。 – jveazey 2010-11-07 07:26:48

+0

从来没有见过。谢谢。与signtool合作生成一个测试证书。不幸的是,我已经将浏览器设置为在退出时删除cookie,并且我还没有一个计算器帐户。感谢您一直以来的帮助。 – Kevin 2010-11-07 07:36:18