应用程序签名/验证

22

我对Windows开发还比较新,但是刚完成了一个小项目。我想让我的应用程序像许多其他应用程序一样变得“已验证”。例如,当您启动应用程序并弹出用户帐户控制提示时,它不会显示“未知发布者”消息和黄色条,并且应该有一个“已验证:“部分。

我希望我解释得正确。有人知道如何做到这一点吗?我希望它不像SSL证书那样需要付钱...

如果我的问题不清楚或者我没有正确地解释,请随时告诉我。谢谢!

4个回答

21

不幸的是,是的,您需要付钱。

您需要的是代码签名证书。您可以从以下证书颁发机构获得: Thawte

VeriSign

或者如果您正在寻找便宜的,我会在这里购买一个,那就是我得到我的地方: Tucows

一旦您获得了证书,就可以将其集成到构建过程中以签署您的应用程序,并显示您的名称为发布者。


1
我明白了,感谢提供的信息!拿到证书后,我需要在Visual Studio的项目设置下使用“签名”和“安全性”选项卡来完成剩下的步骤,对吗? - Aaron
2
您可以在此处获取Comodo证书折扣:https://secure.ksoftware.net/code_signing.html[声明:本人与该网站无关。] - iwalkbarefoot
Silence Dogood:Tucows的折扣Comodo证书更便宜。 (-; - Eaton
1
每个证书是否适用于生产的多个软件和修订版本,还是仅适用于一个? - Dan W
1
您可以签署任何可执行文件。它不会锁定到特定的、命名的应用程序。 - Eaton

7
这被称为代码签名。如果您想为自己生成证书,只需按照此答案中的说明操作即可。
正如Eaton所建议的那样,如果您想要用于公共使用,就必须支付费用。我最近从http://www.instantssl.com/code-signing/index.html购买了一份为期2年、约340美元的BuildMaster软件证书。

对评论的回应:

如果我自己生成了证书,它怎么能只为我工作而不是为所有人(公开)工作呢?

步骤1和2在链接的答案中创建了一个自签名的证书颁发机构(CA),然后将其添加到您的Windows证书存储中。步骤3生成代码签名证书并指定发行CA(-ic开关)。由于发行者是在步骤1中创建并在步骤2中手动信任的CA,因此在步骤3中生成的代码签名证书似乎是由您的机器上的可信方签名的。
它无法被公众信任,因为您既生成了代码签名证书,又使用该证书验证其创建者的身份的权威。想象一下,如果您是邪恶的,并在代码签名证书中放入虚假信息,称签名者是Microsoft.com而不是Aaron!如果没有受信任的机构来验证签名者的实际身份,所有证书都将无用。
当您从受信任的CA订购证书时,他们会以某种方式验证您的身份。如果要以您的名字进行签名,则他们可能会要求您提供驾驶执照的扫描副本,或者只有业务所有者才有的东西,例如公司章程(我们使用D&B D-U-N-S号码验证Inedo)。
一旦他们验证了您或您公司的身份,他们将向您发送一个证书,这个证书被典型的Web浏览器信任,您可以使用它来签署您的可执行文件,公众可以确信是您签署了它们,因为CA就是您购买证书的公司。如果您查看您喜欢的Web浏览器的选项部分,您可以看到哪些CA被视为受信任。

谢谢。如果我生成了自己的证书,那么它对我有用,但对其他人(公开)没有用,这该怎么办? - Aaron
@Aaron - 我已经根据你的评论更新了帖子。 - John Rasch
请参见我的答案的“缺点”。 - k3b

1
除了像@Eaton所解释的购买证书和像@John Rasch建议的自创建自签名证书之外,
您可以尝试来自http://cacert.org的免费基于社区的证书,其工作方式类似于pgp/gpg-s信任系统。对于代码签名,您需要至少100个点的信任简历。
德国用户还可以使用免费的http://web.de证书,该证书也允许代码签名。
这种方法(以及自创建的证书)的缺点是,“已验证”仅在执行客户端的操作系统安装了签名机构的根证书时才会激活,而这在99%的情况下并不是这样。
但是Firefox知道cacert.org,因此可以将cacert的证书用于https、java和silverlight,但无法用于标准msie,除非安装了根证书。

1
你也可以从StartCom(www.startssl.com)购买代码签名证书,大约49.90美元两年 - 比Thawte、Verisign和其他公司便宜得多。

StartCom CA自2018年1月1日起关闭,不再使用StartCom名称根颁发任何新证书。 - BoltBait

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