如何在Visual Studio项目中应用数字签名?

11

可执行文件和DLL可以进行数字签名,它向用户传递信任

然而,我的研究似乎没有什么进展。我想我需要一份完整的、傻瓜式的步骤指南,来让我学会直接在编译时对二进制文件进行数字签名。我的意思是:点击“生成”并获得一个已签名的可执行文件。我真的不想手动签名每个文件。

Visual Studio有一个“签名”选项卡在项目属性中,所以我想我应该在那里查找。看起来我需要一个.pfx文件。但我应该在哪里获取包含我的名称的文件,并如何正确使用它?

此外,这需要花钱吗? - 每个二进制文件 / 仅一次 / 根本不需要?

签名二进制文件的例子:

example


你需要从证书颁发机构购买“代码签名证书”。价格从50美元到500美元不等,如果你想通过微软获取崩溃转储,还有额外的要求。价格是在证书有效期内的,你可能需要随着时间的推移进行更新。另请参见:http://stackoverflow.com/questions/1077800/which-code-signing-authority-should-i-go-with - jessehouwing
1
获取崩溃转储听起来很美味,但对于非营利性开发者来说,支付500美元的一年有效证书只是令人作呕。是否可能在没有计数签名(或称为其他名称)的情况下签署二进制文件? - bytecode77
只有一个证书,它会显示为不受信任的状态。或者使用其他人的证书。 - jessehouwing
好的,这对我来说不是一个选项。但我仍然会在这里留下这个答案。也许它会在某个时候帮助到别人。 - bytecode77
1个回答

6
我一直手动签名我的dll和应用程序。为了使您的签名即使代码签名证书过期也能持续存在,您需要向签名添加时间戳。
要签署dll/exe,您需要购买codesign证书,但有些CA(例如如果您是开源开发人员)可以免费获得。其中之一是Cetrum CA(我目前正在使用)。请看这里。获得它的过程很痛苦,但证书本身还好。(它不能与所有浏览器一起使用-请使用FF,在每个页面上都需要进行单一登录并且邮件为波兰语。)
时间戳可以免费获得(例如从Hanselman's blog中的链接或者您可以在这里找到一份符合RFC 3161标准的免费时间戳机构列表)。

我可以使用一个证书签署所有的二进制文件吗? - bytecode77
当然可以。我使用的是 signtool.exe,需要签名的内容是最后一个参数。我使用了 *.dll *.exe - pepo
请注意,如果一年后您想签署一个新的应用程序,您仍需要一个有效的证书。时间戳只保护已经签名的应用程序,但您无法使用过期的证书签署应用程序。 - jessehouwing
@jessehouwing 是的,你需要在之前的代码签名过期后再次获取另一个代码签名才能再次签署任何二进制文件。可能需要一年或两年的时间。但是,如果您不为签名添加时间戳,并且不发布应用程序的任何新版本,则旧版本在代码签名证书过期后停止工作。 - pepo

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